WEB sunucularının savaşı. Bölüm 1 – HTTP bağlantısız:

Bu yazıda tersine mühendislik konusunda elimizden geleni yapacağımız söylenebilir. Kirli ellerimizi her web sunucusunun altına sokacağız ve onları hiç kimsenin istismar edemeyeceği şekillerde istismar edeceğiz.

Bu test, küresel bir atın boşluktaki ölçümüdür, elde edilen verilerden başka bir şey değildir ve şimdi bununla ne yapacağımızı bilmiyoruz.

WEB sunucularının savaşı. Bölüm 1 – HTTP bağlantısız:

Teknik

Nginx ve Apache için işletim sistemi, IIS Windows Server Core 18.04 için Ubuntu 2019 LTS'dir. Testler öncesinde tüm işletim sistemleri 04.12.2019 Aralık XNUMX itibarıyla son güncellemeleri almıştır.

Testler yalnızca HTTP üzerinden gerçekleştirildi. Her web sunucusu Codrops'un ücretsiz bir Jekyll şablonu olan aynı sayfayı çalıştırıyordu. Bağlantı. Her web sunucusunda gzip sıkıştırması devre dışı bırakıldı.

Verim testi Httpd-tools ile şu argümanlarla yapıldı:

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

Sunucular 10, 5 ve bir çekirdekte çekirdeğin yüzde 1, 8 ve 4'i ile sınırlıydı. Test tezgahı 9900K@5400MHz'e sahip bir bilgisayardı; bu, %10'luk bir limit alan sunucunun çekirdek başına yaklaşık 540MHz aldığı anlamına gelir.

TTFB testi, sunucu ilk başlatıldığında ve DevTools kullanılarak ölçüldüğünde gerçekleştirildi; sonuç alındıktan sonra, her türlü önbellek görünümünü ortadan kaldırmak için sunucu kapatıldı ve önceki kontrol noktasına geri alındı.

Test cihazı ve web sunucusu aynı ana bilgisayarda ve aynı sanal anahtardaydı.

Disk alt sistemini anında değerlendirmek için, darboğazlar hakkında fikir sahibi olmak amacıyla ATTO ve CrystalDIskMark kıyaslamalarının sonuçları.

Sanal makineden alınan veriler:WEB sunucularının savaşı. Bölüm 1 – HTTP bağlantısız:
WEB sunucularının savaşı. Bölüm 1 – HTTP bağlantısız:
WEB sunucularının savaşı. Bölüm 1 – HTTP bağlantısız:
WEB sunucularının savaşı. Bölüm 1 – HTTP bağlantısız:

Sonuçlar:

:

WEB sunucularının savaşı. Bölüm 1 – HTTP bağlantısız:
IIS için ortalama TTFB en küçük değerdir (0,5 ms), Apache için 1,4 ms ve Nginx için 4 ms.

Üretilen:

Öncelikle her sunucunun çekirdek sayısına göre ne kadar iyi ölçeklendiğine bakalım.

WEB sunucularının savaşı. Bölüm 1 – HTTP bağlantısız:
Grafik, test cihazının web sunucusuna yaptığı çağrıların sayısını ve gecikmeyi gösterir. Grafik, NGINX'in tüm isteklerin %98'ini işlediğini ve siteyi 20 ms veya daha kısa sürede teslim ettiğini gösteriyor. IIS, Apache gibi tüm çağrıların son %5'ini sırasıyla 76 ms ve 14 ms'de tamamladı.

WEB sunucularının savaşı. Bölüm 1 – HTTP bağlantısız:
WEB sunucularının savaşı. Bölüm 1 – HTTP bağlantısız:
WEB sunucularının savaşı. Bölüm 1 – HTTP bağlantısız:
Grafik, stres testi sırasında bir isteğin ortalama işlem süresini gösterir.

Grafiklerden görebileceğiniz gibi IIS, hem Apache'yi hem de Nginx'i havaya uçurdu ve yüksek yük altında önemli ölçüde yavaşladı. 

IIS açıkça 4 yerine XNUMX çekirdeği tercih etti, XNUMX'te daha düşük gecikmeler gösterdi, ancak tek çekirdeği de pek tercih etmedi.

NGINX, 8 çekirdeğin tamamında iyi bir şekilde ölçekleniyor ve Apache için tek çekirdekli senaryo en iyi seçim gibi görünüyor.

Ölçeklenebilirlik:

nginx:

Şimdi frekans ve çekirdek sayısı açısından ölçeklenebilirliğe bakalım. 

WEB sunucularının savaşı. Bölüm 1 – HTTP bağlantısız:
Nginx, 1 ve 4 çekirdek için %1 sınırı olan testleri geçemedi; 2000 isteği aştığında test cihazıyla bağlantıyı sonlandırdı.

Apache:

WEB sunucularının savaşı. Bölüm 1 – HTTP bağlantısız:
Nginx gibi Apache de 2500 isteği işledikten sonra vazgeçti ve bağlantıyı kapattı. Apache 8, 4 ve 1 çekirdekte %1 limitle testte başarısız oldu ancak buna ek olarak tek çekirdekte %5 limitle de testte başarısız oldu ki bu da Nginx'ten daha kötü

IIS:

WEB sunucularının savaşı. Bölüm 1 – HTTP bağlantısız:
Testler sırasında IIS devasa bir istek kuyruğu biriktirdi ancak bunların her birini işledi. Görünüşe göre, istek işleme için ayarlanmış herhangi bir zaman aşımı yok.

WEB sunucularının savaşı. Bölüm 1 – HTTP bağlantısız:
Grafik, testi tamamlamak için geçen süreyi gösterir. Tamamen saçma test konfigürasyonları atıldı. Diyagram, donanım söz konusu olduğunda IIS'nin ne kadar zorlu olduğunu ve NGINX'in ne kadar harika olduğunu gösteriyor.

Diskten ölçeklenebilirlik:

nginx:

Şimdi frekans, çekirdek sayısı ve disk hızı açısından ölçeklenebilirliğe bakalım. 

WEB sunucularının savaşı. Bölüm 1 – HTTP bağlantısız:
Bu sefer Nginx iki yerine 4 testte başarısız oldu.

Apache:

WEB sunucularının savaşı. Bölüm 1 – HTTP bağlantısız:
Apache geçen seferkiyle aynı sayıda testte başarısız oldu.

IIS:

WEB sunucularının savaşı. Bölüm 1 – HTTP bağlantısız:
IIS, sanki disk kısıtlaması yokmuş gibi neredeyse aynı grafiği gösteriyor. Genel olarak tüm sunucuların grafikleri pek değişmedi, bu da her birinin statik verileri RAM'de önbelleğe alıp oradan sunduğu anlamına geliyor. Burada ana darboğazı görüyoruz; web sunucusunun kendisi.

Bu teste dayanarak sonuç çıkarmak için henüz çok erken; Let's Encrypt'in canlı sertifikasıyla henüz HTTPS, sıkıştırma ve HTTP/2'yi test etmedik. Bir sonraki makalede bunun hakkında konuşacağız.

WEB sunucularının savaşı. Bölüm 1 – HTTP bağlantısız:

Kaynak: habr.com

Yorum ekle