6

Ho un sito in esecuzione su Amazon beanstalk elastico con il seguente modello di traffico:Quali sono le impostazioni di Cloudwatch/Autoscale corrette per picchi di traffico estremamente brevi su Amazon Web Services?

  • ~ 50 utenti simultanei normalmente.
  • ~ 2000 utenti concomitanti per 1/2 minuti quando viene creato un post sulla pagina di Facebook.

Amazon Web Services sostengono di essere in grado di scalare rapidamente alle sfide come questo, ma la messa a punto "Maggiore di x per più di 1 minuto" di CloudWatch non sembra essere abbastanza veloce per questo modello di traffico?

Di solito in pochi secondi tutte le istanze di ec2 si bloccano, uccidendo tutte le metriche di cloudwatch e l'intero sito è inattivo per 4/6 minuti. Finora devo ancora trovare una configurazione che funzioni per questo senario.

Ecco il grafico di un evento più piccolo che ha ucciso anche il sito: enter image description here

+0

Il grafico mostra un test di assedio di 200 utenti consecutivi per 2 minuti. Questa è una lunghezza tipica ma ~ 20% del volume di traffico quando viene pubblicato un collegamento. – Ben

+0

Ti verrà addebitata per un'intera ora in caso di ridimensionamento, Anche se fosse possibile scalare velocemente (utilizzando un ami pronto per l'uso) arrotolare un gruppo di server on demand per rilasciarli dopo dieci minuti è una manovra costosa – theist

risposta

1

Il suggerimento da AWS è la seguente:

Siamo sempre al lavoro per rendere i nostri sistemi più reattivo, ma è sfidando a disposizione i server virtuali automaticamente con un tempo di risposta di pochi secondi, come il tuo sembra che il caso d'uso richieda. Forse c'è una soluzione alternativa che risponde più rapidamente o che è più resiliente quando le richieste iniziano ad aumentare.

Avete notato se il sito offre prestazioni migliori se si utilizza un tipo di istanza più grande o un numero maggiore di istanze nello stato stazionario? Questo potrebbe essere un metodo per essere resiliente agli aumenti rapidi delle richieste in entrata . Sebbene riconosca che potrebbe non essere il più conveniente, potresti trovare una soluzione rapida.

Un altro approccio potrebbe essere quello di regolare l'allarme per utilizzare una soglia o una metrica che rifletterebbe (o prevederebbe) l'aumento della richiesta prima. Ad esempio, è possibile vedere prestazioni migliori se si imposta la sveglia su aggiungendo istanze dopo aver superato 75 o 100 utenti. Potresti già essere facendo questo.A parte questo, il tuo caso d'uso potrebbe avere un altro indicatore che prevede un aumento della domanda, ad esempio un post sulla tua pagina Facebook può precedere un aumento significativo della richiesta di diversi secondi o addirittura un minuto. Utilizzando le metriche personalizzate di CloudWatch per monitorare il valore e quindi impostare un allarme su Auto Scale su di esso potrebbe anche essere una soluzione potenziale .

Quindi penso che la risposta migliore sia eseguire più istanze a un traffico inferiore e utilizzare le metriche personalizzate per prevedere il traffico proveniente da una fonte esterna. Proverò, ad esempio, a monitorare Facebook e Twitter per i post con link al sito e ad aumentare progressivamente.

3

Sono questi collegamenti pubblicati prevedibile? In tal caso, è possibile utilizzare Scaling by Schedule o, in alternativa, modificare il valore DESIDO-CAPACITÀ del gruppo di ridimensionamento automatico o persino attivare lo as-execute-policy per ridimensionarlo prima che il collegamento venga pubblicato.

Sapete che è possibile avere più criteri di ridimensionamento in un gruppo? Quindi potresti avere una speciale politica di Auto Scaling per il tuo caso, qualcosa come SCALE_OUT_HIGH che aggiunge altre 10 istanze contemporaneamente. Dai un'occhiata al comando as-put-scaling-policy.

Inoltre, è necessario controllare il codice e trovare i colli di bottiglia.

Che tipo di HTTPD si utilizza? Prendi in considerazione il passaggio a Nginx poiché è molto più veloce e richiede meno risorse di software rispetto ad Apache. Prova ad usare Memcache ... NoSQL come Redis per alta lettura e scrittura è anche l'opzione giusta.

Problemi correlati