Am implementat o aplicație web LAMP în două instanțe AWS separate (etichetate prod și test). Ambele sunt t2.micro, dar prod este imaginea Linux mai veche și test este noua imagine Linux 2. Folosind instrumentul de dezvoltare al browserului Chrome:
prod - timp total: intre 500ms si 600ms
test - timp total: intre 15 secunde si 50 secunde
TTFB pe prod este mai mic de 100 ms pentru toate fișierele descărcate (script, css, js etc.)
TTFB la test este de 3 sau mai multe secunde...
Iată un link către captura de ecran a instrumentelor de dezvoltare Chrome:
Rezultate sincronizare Chrome Dev Tool
În plus, timpul de descărcare pentru fiecare fișier este mult mai mare pe instanța de testare.
Au practic aceeași conf. apache, aceeași utilizare a memoriei (~50%), același cod.
Am încercat să-mi dau seama de ce și nu găsesc un răspuns. Acestea sunt verificări suplimentare pe care le-am făcut:
- Am încercat strace și durează câteva secunde pentru a prelua următoarea solicitare (3.1s în exemplul de mai jos):
6645 17:28:29 read(10, 0x55ff6e9b23f8, 8000) = -1 EAGAIN (Resursa indisponibilă temporar) <0,000007>
...
6645 17:28:32 <... sondaj reluat> ) = 1 ([{fd=10, revents=POLLIN}]) <3.108490>
- Aici strace arată, de asemenea, apache așteaptă foarte mult timp ca socket-ul (fd=10) să fie disponibil pentru scriere din nou după un sendfile...
6645 17:28:32 sendfile(10, 11, [76038] => [78918], 69895) = 2880 <0,000009>
6645 17:28:32 sondaj([{fd=10, events=POLLOUT}], 1, 60000 <neterminat ...>
....
6645 17:28:55 <... sondaj reluat> ) = 1 ([{fd=10, revents=POLLOUT}]) <23.333877>
- Am încercat să descarc un fișier mare (3,6 MB) prin scp și este mult mai rapid (~1,7 MB/s). Asta îmi spune că este ceva în neregulă cu apache sau cu prizele pe care apache le folosește, poate?
Ai idee ce se întâmplă la test? sau dacă aceasta este viteza așteptată de la o instanță t2.micro EC2?
Mulțumiri,
Mario.