2013-10-08 5 views
5

Si prega di tenere presente che ho poca esperienza con queste cose.Quanto è significativo l'effetto della latenza di rete in Amazon Web Services tra le istanze EC2 e RDS, in particolare per Magento?

Ho cercato di configurare un sito Magento multi-server in Elastic Beanstalk, utilizzando RDS come database ed EC2 per i server di amministrazione e frontend separati. Stavo testando la velocità di alcuni setup diversi su tools.pingdom.com, principalmente guardando quello che chiamano "wait" (DNS, connect, send, WAIT, receive), assumendo che sia una misura approssimativa di quanto tempo ci vuole per Magento per generare l'html per una pagina. Sono rimasto perplesso dal modo in cui su diverse impostazioni, il tempo di attesa potrebbe variare in modo così drastico da creare più o meno la stessa pagina utilizzando istanze di server simili. Stavo ottenendo valori tra 980ms e 1.8s.

Pensavo di aver notato un motivo. Sembrava che le impostazioni in cui gli EC2 si trovavano nelle stesse zone di disponibilità delle istanze RDS sarebbero state più veloci e coerentemente più veloci. Così ho cambiato le configurazioni di beanstalk elastico in modo che gli EC2 si trovassero nella stessa zona del database. Le mie scoperte non scientifiche erano che avrei costantemente ottenuto tempi di attesa di circa 1 secondo dopo questo cambiamento. Mi sembra che le differenze di velocità abbastanza significative siano dovute alla latenza di rete tra il server delle applicazioni e il database.

Ci sono tre parti alla mia domanda. Innanzitutto, è questo che ci si aspetterebbe dal tenere le istanze nelle stesse zone, o sto leggendo troppo in una piccola serie di risultati dei test? Secondo, questa è una differenza significativa nella velocità del mondo reale? Perché sembra essere per me, e sembra anche che sarebbe peggiorato solo usando cose come NFS per condividere le cartelle multimediali. In terzo luogo, ci sono dei vantaggi nel permettere che i server delle applicazioni vengano lanciati in zone diverse, e questi vantaggi valgono l'aumento del tempo di attesa?

Inoltre, se sto facendo qualcosa di sbagliato, per favore dimmi.

risposta

5

La latenza tra le zone deve essere compresa nell'intervallo di un millisecondo. Sebbene ciò possa costituire un problema in alcuni scenari, nella maggior parte dei casi, è possibile compensare facendo un buon uso del caching.

Il vantaggio principale dell'utilizzo di più zone è la disponibilità. Il sistema è progettato in modo tale che ci sia molto poco spazio tra ogni zona. Se qualcosa causa il fallimento di una singola zona, non dovrebbe avvenire in cascata verso altre zone.

Mentre questo funziona principalmente, ci sono stati alcuni casi (specialmente con volumi EBS) che hanno mostrato i limiti di tale isolamento.

+2

Freddo. Ho provato a eseguire il ping tra istanze EC2 nello stesso e in zone diverse. Tra ec2s entrambi in us-east-1d, sto ottenendo circa 0,5 ms. Tra noi-est-1d e 1c, ho circa 2 ms. Sembra una piccola differenza per me, ma secondo te, la differenza di 1,5 ms si sommerebbe (con abbastanza query di database) alle differenze di 200 ms -800 ms che vedo sui miei siti di test? È così che funziona? I blocchi –

+2

sono utili per rilevare la latenza, ma la gravità critica dipende dalla modalità di utilizzo della connessione di rete. Invia molte brevi richieste SQL "veloci" che vengono eseguite sequenzialmente nel codice e la latenza fa davvero male. Se è possibile organizzare le richieste SQL in più grandi ma meno richieste ed eseguire queste richieste in parallelo nel codice, la latenza avrà un impatto molto minore. –

Problemi correlati