2015-04-08 15 views
8

Si ottengono intermittenti ma errori regolari 503 ("Servizio non disponibile: server back-end disponibile") da un sito costituito da 2 istanze t2.medium dietro un ELB. Nessuno è sotto carico particolarmente pesante e tutto il monitoraggio sembra normale.Come risolvere AWS ELB/EC2 HTTP 503 con le impostazioni di timeout?

La documentazione AWS qui: http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/ts-elb-error-message.html dicono che una potenziale causa è impostazioni di timeout non corrispondenti tra l'ELB e EC2S: "impostato il timeout keep-alive a maggiore o uguale alle impostazioni di timeout di inattività del tuo bilanciamento del carico"

Apache conf sui EC2S ha:

  • KeepAlive on
  • MaxKeepAliveRequests 100
  • KeepAliveTimeout 5

Il timeout di inattività sul bilanciamento del carico è di 60 secondi.

Questo sembrerebbe, quindi, essere una causa, ma non sono sicuro della correzione. Aumentare Apache KeepAliveTimeout non è - lo capisco - normalmente raccomandato, e sono ugualmente incerto sull'effetto che la riduzione del timeout di inattività sull'ELB avrà sulle prestazioni del sito.

Qual è l'approccio consigliato? Come posso avere un'idea di quali sono le impostazioni ideali per la mia configurazione e il tipo di livello di traffico (attualmente circa 30-50 richieste/min) con cui si occupa?

+3

L'aumento del timeout di apache dovrebbe andare bene, dietro ELB, perché ELB tiene le connessioni, invece dei browser che le tengono direttamente. Provalo? –

risposta

3

Vorrei abbassare il timeout di inattività nell'ELB. I client dovranno aprire nuove connessioni più spesso, ma è leggermente più lento del riutilizzo di una connessione keepalive.

Aumentare il keepalive a 60 in Apache dovrebbe anche risolvere il 503, ma è necessario fare attenzione a non esaurire le connessioni o la memoria, specialmente con prefork mpm perché si otterranno molti più slot usati in keepalive. Usa worker mpm (o event mpm se non hai paura dell'avviso "This MPM is experimental"), assicurati di avere MaxClients abbastanza alto da gestire tutte le richieste ma abbastanza basso da non esaurire il memo.

Problemi correlati