Labanan ng mga WEB server. Bahagi 1 – HTTP out of touch:

Sa artikulong ito susubukan namin ang aming kamay sa reverse engineering, maaaring sabihin ng isa. Kukunin namin ang aming mga maruruming kamay sa ilalim ng hood ng bawat web server, pagsasamantala sa kanila sa mga paraan na walang sinuman ang magsasamantala.

Ang pagsubok na ito ay isang pagsukat ng isang spherical na kabayo sa isang vacuum, walang iba kundi ang data na nakuha, at ngayon ay hindi namin alam kung ano ang gagawin dito.

Labanan ng mga WEB server. Bahagi 1 – HTTP out of touch:

Pamamaraan

Ang operating system para sa Nginx at Apache ay Ubuntu 18.04 LTS, para sa IIS Windows Server Core 2019. Bago ang mga pagsubok, natanggap ng lahat ng operating system ang pinakabagong mga update noong Disyembre 04.12.2019, XNUMX.

Eksklusibong isinagawa ang mga pagsubok sa HTTP. Ang bawat web server ay tumatakbo sa parehong pahina, isang libreng Jekyll template mula sa Codrops. Link. Ang bawat web server ay may gzip compression na hindi pinagana.

Ang throughput test ay ginawa gamit ang Httpd-tools na may mga argumento:

ab -n 50000 -c 500 http://192.168.76.204:80/

Ang mga server ay limitado sa 10, 5, at 1 porsyento ng core sa 8, 4, at isang core. Ang test bench ay isang computer na may 9900K@5400MHz, na nangangahulugang ang server na tumatanggap ng 10% na limitasyon ay tumatanggap ng humigit-kumulang 540MHz bawat core.

Ang pagsubok sa TTFB ay isinagawa noong unang nag-boot at nasukat ang server gamit ang DevTools pagkatapos matanggap ang resulta, ang server ay pinatay at ibinalik sa nakaraang checkpoint upang alisin ang hitsura ng anumang uri ng mga cache.

Ang tester at ang web server ay nasa parehong host at nasa parehong virtual switch.

Upang agad na suriin ang disk subsystem, ang mga resulta ng ATTO at CrystalDIskMark na mga benchmark upang magkaroon ng ideya sa mga bottleneck.

Ang data na kinuha mula sa virtual machine:Labanan ng mga WEB server. Bahagi 1 – HTTP out of touch:
Labanan ng mga WEB server. Bahagi 1 – HTTP out of touch:
Labanan ng mga WEB server. Bahagi 1 – HTTP out of touch:
Labanan ng mga WEB server. Bahagi 1 – HTTP out of touch:

Mga resulta:

TTFB:

Labanan ng mga WEB server. Bahagi 1 – HTTP out of touch:
Ang average na TTFB para sa IIS ay ang pinakamaliit, 0,5ms, kumpara sa 1,4ms para sa Apache at 4ms para sa Nginx.

Throughput:

Una, tingnan natin kung gaano kahusay ang bawat sukat ng server batay sa bilang ng mga core.

Labanan ng mga WEB server. Bahagi 1 – HTTP out of touch:
Ipinapakita ng graph ang bilang ng mga tawag sa tester sa web server at latency. Ipinapakita ng graph na naproseso ng NGINX ang 98% ng lahat ng kahilingan, na naghahatid ng site sa loob ng 20ms o mas maikli. Nakumpleto ng IIS, tulad ng Apache, ang huling 5% ng lahat ng tawag sa 76ms at 14ms, ayon sa pagkakabanggit.

Labanan ng mga WEB server. Bahagi 1 – HTTP out of touch:
Labanan ng mga WEB server. Bahagi 1 – HTTP out of touch:
Labanan ng mga WEB server. Bahagi 1 – HTTP out of touch:
Ipinapakita ng graph ang average na oras ng pagproseso para sa isang kahilingan sa panahon ng stress test.

Tulad ng nakikita mo mula sa mga graph, pinalipad ng IIS ang Apache at Nginx, na bumagal nang husto sa ilalim ng mataas na pagkarga. 

Malinaw na ginusto ng IIS ang 4 na mga core kaysa sa XNUMX, na nagpapakita ng mas mababang mga latency sa XNUMX, ngunit hindi rin lubos na pinapaboran ang isang core.

Ang NGINX ay mahusay na sumusukat sa lahat ng 8 core, at para sa Apache, ang single-core na senaryo ay tila ang pinakamahusay na pagpipilian.

Scalability:

Nginx:

Ngayon tingnan natin ang scalability sa mga tuntunin ng dalas at bilang ng mga core. 

Labanan ng mga WEB server. Bahagi 1 – HTTP out of touch:
Ang Nginx ay hindi pumasa sa mga pagsubok na may limitasyon na 1% para sa 4 at 1 na mga core kapag ito ay lumampas sa 2000 mga kahilingan, tinapos nito ang koneksyon sa tester.

Apache:

Labanan ng mga WEB server. Bahagi 1 – HTTP out of touch:
Ang Apache, tulad ng Nginx, na naproseso ang 2500 kahilingan, sumuko at isinara ang koneksyon. Nabigo ang Apache sa pagsubok sa 8, 4 at 1 na mga core na may limitasyon na 1%, ngunit bilang karagdagan, nabigo din ito sa pagsubok na may 5% na limitasyon sa isang core, na mas masahol pa kaysa sa Nginx

IIS:

Labanan ng mga WEB server. Bahagi 1 – HTTP out of touch:
Sa panahon ng mga pagsubok, nag-ipon ang IIS ng napakalaking pila ng mga kahilingan ngunit pinoproseso ang bawat isa sa kanila. Tila, sa labas ng kahon ay walang mga timeout na itinakda para sa pagproseso ng kahilingan.

Labanan ng mga WEB server. Bahagi 1 – HTTP out of touch:
Ipinapakita ng tsart ang oras na kinuha upang makumpleto ang pagsusulit. Ang ganap na walang katotohanan na mga pagsasaayos ng pagsubok ay itinapon. Ang diagram ay nagpapakita kung gaano hinihingi ang IIS pagdating sa hardware, at kung gaano kahanga-hanga ang NGINX.

Scalability mula sa disk:

Nginx:

Ngayon tingnan natin ang scalability sa mga tuntunin ng dalas at bilang ng mga core at bilis ng disk. 

Labanan ng mga WEB server. Bahagi 1 – HTTP out of touch:
Sa pagkakataong ito, nabigo ang Nginx sa 4 na pagsubok sa halip na dalawa.

Apache:

Labanan ng mga WEB server. Bahagi 1 – HTTP out of touch:
Nabigo ang Apache sa parehong bilang ng mga pagsubok tulad ng huling pagkakataon.

IIS:

Labanan ng mga WEB server. Bahagi 1 – HTTP out of touch:
Ang IIS ay nagpapakita ng halos magkaparehong graph, na parang walang mga paghihigpit sa disk. Sa pangkalahatan, ang mga graphic ng lahat ng mga server ay hindi nagbago nang malaki, na nangangahulugan na ang bawat isa sa kanila ay nag-cache ng static na data sa RAM at nagsilbi mula doon. Dito nakikita natin ang pangunahing bottleneck - ang web server mismo.

Masyado pang maaga para gumawa ng mga konklusyon batay sa pagsubok na ito; hindi pa namin nasusubok ang HTTPS, compression at HTTP/2 na may live na certificate mula sa Let's Encrypt. Pag-uusapan natin ito sa susunod na artikulo.

Labanan ng mga WEB server. Bahagi 1 – HTTP out of touch:

Pinagmulan: www.habr.com

Magdagdag ng komento