Bu yazıda əlimizi tərs mühəndislikdə sınayacağıq, deyə bilərik. Çirkli əllərimizi hər bir veb serverin başlığı altına alacağıq, onlardan heç kimin istifadə etməyəcəyi şəkildə istismar edəcəyik.
Bu test vakuumda sferik atın ölçülməsidir, əldə edilmiş məlumatlardan başqa bir şey deyil və indi onunla nə edəcəyimizi bilmirik.
Texnika
Nginx və Apache üçün əməliyyat sistemi IIS Windows Server Core 18.04 üçün Ubuntu 2019 LTS-dir. Testlərdən əvvəl bütün əməliyyat sistemləri 04.12.2019 dekabr XNUMX-cu il tarixinə ən son yeniləmələri alıb.
Testlər yalnız HTTP üzərindən aparıldı. Hər bir veb server eyni səhifəni işlətdi, Codrops-dan pulsuz Jekyll şablonu.
Ötürmə qabiliyyəti testi Httpd alətləri ilə arqumentlərlə aparıldı:
ab -n 50000 -c 500 http://192.168.76.204:80/
Serverlər 10, 5 və bir nüvədə nüvənin 1, 8 və 4 faizi ilə məhdudlaşdı. Test dəzgahı 9900K@5400MHz olan kompüter idi, yəni 10% limit alan server hər nüvə üçün təxminən 540MHz alır.
TTFB testi server ilk dəfə yükləndikdə və nəticəni aldıqdan sonra DevTools istifadə edərək ölçüldükdə həyata keçirildi, server söndürüldü və istənilən növ keşin görünüşünü aradan qaldırmaq üçün əvvəlki yoxlama nöqtəsinə qaytarıldı;
Tester və veb server eyni hostda və eyni virtual keçiddə idi.
Dərhal disk alt sistemini, ATTO və CrystalDIskMark benchmarklarının nəticələrini qiymətləndirmək üçün darboğazlar haqqında bir fikir əldə edin.
Virtual maşından alınan məlumatlar:
Nəticələr:
TTFB:
IIS üçün orta TTFB ən kiçikdir, 0,5 ms, Apache üçün 1,4 ms və Nginx üçün 4 ms-dir.
Həcmi:
Əvvəlcə, nüvələrin sayına görə hər bir serverin nə qədər yaxşı ölçüləndiyinə baxaq.
Qrafik testerin veb serverə edilən zənglərinin sayını və gecikmə müddətini göstərir. Qrafik göstərir ki, NGINX bütün sorğuların 98%-ni işləyib, saytı 20 ms və ya daha az müddətdə çatdırıb. IIS, Apache kimi, bütün zənglərin son 5%-ni müvafiq olaraq 76 ms və 14 ms-də tamamladı.
Qrafik stress testi zamanı bir sorğu üçün orta emal müddətini göstərir.
Qrafiklərdən göründüyü kimi, IIS həm Apache, həm də Nginx-i uçurdu, yüksək yük altında əhəmiyyətli dərəcədə yavaşlayır.
IIS açıq şəkildə 4-dən çox XNUMX nüvəyə üstünlük verdi, XNUMX-də daha aşağı gecikmələr göstərdi, eyni zamanda bir nüvəyə qətiyyən üstünlük vermədi.
NGINX bütün 8 nüvədə yaxşı miqyas alır və Apache üçün tək nüvəli ssenari ən yaxşı seçim kimi görünür.
Ölçeklenebilirlik:
nginx:
İndi nüvələrin tezliyi və sayı baxımından miqyaslılığa baxaq.
Nginx 1 sorğunu keçdikdə 4 və 1 nüvələr üçün 2000% limitlə testlərdən keçmədi, test cihazından ayrıldı.
Apache:
Apache, Nginx kimi, 2500 sorğunu emal edərək, imtina etdi və əlaqəni bağladı. Apache 8% limitlə 4, 1 və 1 nüvələrdə sınaqdan çıxa bilmədi, lakin əlavə olaraq Nginx-dən daha pis olan bir nüvədə 5% limitlə testdən də keçə bilmədi.
IIS:
Testlər zamanı IIS nəhəng sorğu növbəsi topladı, lakin onların hər birini emal etdi. Göründüyü kimi, qutudan kənarda sorğunun işlənməsi üçün təyin edilmiş heç bir fasilə yoxdur.
Diaqram testi başa çatdırmaq üçün lazım olan vaxtı göstərir. Tamamilə absurd sınaq konfiqurasiyaları ləğv edildi. Diaqram avadanlıqdan söhbət gedəndə IIS-in nə qədər tələbkar olduğunu və NGINX-in nə qədər gözəl olduğunu göstərir.
Diskdən miqyaslanma:
nginx:
İndi nüvələrin tezliyi və sayı və disk sürəti baxımından miqyaslılığa baxaq.
Bu dəfə Nginx iki yox, 4 testdən keçə bilmədi.
Apache:
Apache keçən dəfə olduğu kimi eyni sayda testdən keçə bilmədi.
IIS:
IIS demək olar ki, eyni qrafiki göstərir, sanki disk məhdudiyyətləri yox idi. Ümumiyyətlə, bütün serverlərin qrafikası çox dəyişməyib, bu o deməkdir ki, onların hər biri RAM-da statik məlumatları keşləyib və oradan onlara xidmət göstərirdi. Burada əsas darboğazı - veb serverin özünü görürük.
Bu test əsasında nəticə çıxarmaq hələ tezdir, biz Let's Encrypt-dən canlı sertifikatla HTTPS, sıxılma və HTTP/2-ni hələ sınaqdan keçirməmişik. Bu barədə növbəti məqalədə danışacağıq.
Mənbə: www.habr.com