V tomto článku si vyskúšame reverzné inžinierstvo, dalo by sa povedať. Dostaneme naše špinavé ruky pod kapotu každého webového servera a využijeme ich spôsobmi, ktoré by nikto nikdy nezneužil.
Tento test je meraním guľovitého koňa vo vákuu, nič iné ako získané údaje a teraz nevieme, čo s tým robiť.
technika
Operačný systém pre Nginx a Apache je Ubuntu 18.04 LTS, pre IIS Windows Server Core 2019. Pred testami dostali všetky operačné systémy najnovšie aktualizácie k 04.12.2019. decembru XNUMX.
Testy boli vykonávané výhradne cez HTTP. Každý webový server prevádzkoval rovnakú stránku, bezplatnú šablónu Jekyll od spoločnosti Codrops.
Test priepustnosti bol vykonaný pomocou nástrojov Httpd s argumentmi:
ab -n 50000 -c 500 http://192.168.76.204:80/
Servery boli obmedzené na 10, 5 a 1 percento jadra na 8, 4 a jednom jadre. Testovacím zariadením bol počítač s frekvenciou 9900K@5400MHz, čo znamená, že server prijímajúci 10% limit dostane približne 540MHz na jadro.
Test TTFB bol vykonaný pri prvom spustení servera a meraný pomocou DevTools; po prijatí výsledku bol server vypnutý a vrátený späť na predchádzajúci kontrolný bod, aby sa eliminoval výskyt akéhokoľvek druhu vyrovnávacej pamäte.
Tester a webový server boli na rovnakom hostiteľovi a na rovnakom virtuálnom prepínači.
Ak chcete okamžite vyhodnotiť diskový subsystém, výsledky benchmarkov ATTO a CrystalDIskMark, aby ste mali predstavu o úzkych miestach.
Údaje prevzaté z virtuálneho počítača:
výsledky:
TTFB:
Priemerný TTFB pre IIS je najmenší, 0,5 ms, oproti 1,4 ms pre Apache a 4 ms pre Nginx.
priepustnosť:
Najprv sa pozrime, ako dobre sa každý server škáluje na základe počtu jadier.
Graf zobrazuje počet volaní testera na webový server a latenciu. Graf ukazuje, že NGINX spracoval 98 % všetkých požiadaviek a doručil stránku za 20 ms alebo menej. IIS, podobne ako Apache, dokončilo posledných 5 % všetkých hovorov za 76 ms a 14 ms.
Graf zobrazuje priemerný čas spracovania jednej požiadavky počas záťažového testu.
Ako môžete vidieť z grafov, IIS sfúkol Apache aj Nginx a pri vysokej záťaži sa výrazne spomalil.
IIS jasne uprednostňovala 4 jadrá pred XNUMX, pričom vykazovala nižšie latencie na XNUMX, ale tiež výrazne neuprednostňovala jedno jadro.
NGINX sa dobre škáluje na všetkých 8 jadrách a pre Apache sa scenár s jedným jadrom zdá byť najlepšou voľbou.
Škálovateľnosť:
Nginx:
Teraz sa pozrime na škálovateľnosť z hľadiska frekvencie a počtu jadier.
Nginx neprešiel testami s limitom 1 % pre 4 a 1 jadrá, pri prekročení 2000 požiadaviek ukončil spojenie s testerom.
apache:
Apache, podobne ako Nginx, po spracovaní 2500 8 požiadaviek vzdal a uzavrel spojenie. Apache prepadol v teste na 4, 1 a 1 jadrách s limitom 5%, no navyše prepadol aj testom s limitom XNUMX% na jednom jadre, čo je horšie ako Nginx
IIS:
Počas testov IIS nazhromaždil obrovský rad požiadaviek, no spracoval každú z nich. Zdá sa, že po vybalení nie sú nastavené žiadne časové limity na spracovanie žiadosti.
Graf zobrazuje čas potrebný na dokončenie testu. Úplne absurdné testovacie konfigurácie boli vyradené. Diagram ukazuje, aký náročný je IIS, pokiaľ ide o hardvér, a aký úžasný je NGINX.
Škálovateľnosť z disku:
Nginx:
Teraz sa pozrime na škálovateľnosť z hľadiska frekvencie a počtu jadier a rýchlosti disku.
Tentoraz Nginx neuspel v 4 testoch namiesto dvoch.
apache:
Apache zlyhal v rovnakom počte testov ako naposledy.
IIS:
IIS zobrazuje takmer identický graf, ako keby neexistovali žiadne obmedzenia disku. Vo všeobecnosti sa grafika všetkých serverov príliš nezmenila, čo znamená, že každý z nich ukladal statické údaje do pamäte RAM a odtiaľ ich podával. Tu vidíme hlavné úzke miesto - samotný webový server.
Na základe tohto testovania je priskoro robiť závery, zatiaľ sme HTTPS, kompresiu a HTTP/2 netestovali živým certifikátom od Let's Encrypt. O tom si povieme v ďalšom článku.
Zdroj: hab.com