Avem propriul nostru rack în Amsterdam, Leaseweb.
Echilibrăm încărcarea HTTP (prin Cloudflare) cu 3 servere Windows 2019 IIS:
- Server 1: server supermicro bare-metal. Rulează IIS, MySQL8 și Redis.
- Server 2: VM pe serverul Dell. Rulează IIS.
- Server 3: VM pe serverul Dell (copie exactă a serverului2). Rulează IIS.
Fișierele sunt servite local în toate cauzele (prin replicare)
Acum problema este că TTFB, ca măsurată local pe server este mai mare pe serverul 2 și pe serverul 3 (VM).
Rularea (mai multe) teste LOCAL cu Chrome:
Server 1:
- În așteptare (TTFB): 269 ms
- În așteptare (TTFB): 255 ms
- În așteptare (TTFB): 253 ms
Server 2:
- În așteptare (TTFB): 379 ms
- În așteptare (TTFB): 376 ms
- În așteptare (TTFB): 369 ms
Server 3:
- În așteptare (TTFB): 374 ms
- În așteptare (TTFB): 381 ms
- În așteptare (TTFB): 378 ms
După cum puteți vedea, serverul unu are TTFB semnificativ mai mic.
În ceea ce privește CPU, serverele 2 și 3 sunt de fapt mai rapide:
SCRIPT PHP BENCHMARK
Server1
Timp total: : 4.022 sec.
Server2
Timp total: : 2.866 sec.
Server3
Timp total: : 2.936 sec.
I/O este aproximativ aceeași pentru toate serverele. Toate au noi SSD-uri cu controlere hardware raid.
Am testat mutarea Redis pe una dintre VM-uri, astfel încât să îmi pot da seama dacă latența suplimentară vine de la Redis, dar nu face nicio diferență.
Presupunerea mea este că latența suplimentară în TTFB vine de la MySQL care rulează pe serverul 1? Rularea MySQL pe același server produce TTFB semnificativ mai mic, chiar dacă procesorul este mai lent.
Există o soluție pentru asta?
De fapt, întrebarea corectă este, cum pot identifica care este cauza latenței suplimentare?