ngx_mbrotli modülü Nginx olay döngüsündeki sıkıştırma gecikmesini düşürdü
Öne çıkanlar
- Google'ın ngx_brotli modülü olay döngüsünü tıkadığı için gecikme 514 milisaniyeye kadar çıktı.
- İş parçacığı havuzu kullanan ngx_mbrotli gecikmeyi 3,3 milisaniyenin altında tuttu.
- Dört iş parçacığıyla saniye başına düşen Brotli yanıtı 15 kata kadar arttı.
- Paralel kodlayıcı kullanımı sebebiyle tepe bellek ihtiyacı 26 kat yükseldi.
Mikhail Panfilov tarafından paylaşılan test sonuçları, Nginx sunucularında anlık Brotli sıkıştırmasının oluşturduğu gecikme sorununa Rust tabanlı ngx_mbrotli modülünün getirdiği çözümü ortaya koydu. Standart google/ngx_brotli modülü yanıtları doğrudan çalışan sürecin olay döngüsünde sıkıştırdığı için büyük dosyalarda aynı süreçteki diğer tüm istekleri kilitledi. Yapılan ölçümlerde Brotli 6 ve 11 seviyelerinde büyük yanıtlar işlenirken, sıkıştırılmamış küçük isteklerin gecikmesi 1,9 milisaniyeden 514 milisaniyeye kadar çıktı.
Nginx iş parçacığı havuzlarını kullanan ngx_mbrotli modülü, sıkıştırma iş yükünü olay döngüsünden arka plana taşıyarak küçük isteklerin gecikmesini 1,7 ile 3,3 milisaniye aralığında tuttu. Dört iş parçacıklı bir havuzla çalışan tek bir Nginx işçisi, 85 kilobayt ile 2,2 megabayt arasındaki dosyalarda standart modüle göre saniye başına 3,8 ile 15 kat daha fazla Brotli yanıtı sundu. En belirgin verim artışı hesaplama maliyeti yüksek olan 9 ve 11 seviyelerinde kaydedildi.
İş parçacığı havuzu mimarisi yüksek hız ve düşük gecikme sağlarken bellek tüketiminde ciddi bir artışa yol açtı. Sekiz eşzamanlı bağlantıda büyük yanıtlar işlenirken çalışan sürecin bellek kullanımı 995 megabayta kadar yükselerek standart modülün 26 katına ulaştı. Ayrıca yanıtların bağımsız bölümler halinde paralel sıkıştırılması nedeniyle 1 megabayttan büyük dosyalarda çıktı boyutu yüzde 0,9 ile 5,2 oranında arttı.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.