26 puan yazan yunyun0505 2022-09-15 | 5 yorum | WhatsApp'ta paylaş

nginx’in sınırları vardı

  • Her istek için yalnızca tek bir worker kullanıldığı için CPU çekirdeği kullanımında dengesizlik oluşuyordu
  • Worker başına bir connection pool bulunduğu için TCP ve TLS bağlantılarının yeniden kullanım oranı düşüktü -> TTFB yükseliyordu
  • Ayrıca nginx’i işletmek için gereken işlevleri de kendileri geliştiriyordu; ancak C ile tasarlanan nginx memory-safe değildi, bu yüzden deneyimli mühendisler bile hata yapabiliyordu

Pingora

  • Cloudflare, RFC standardına uymayan çok sayıda istek de alıyor; üçüncü taraf kütüphaneler (hyper gibi) RFC’ye sıkı bağlı şekilde uygulandığından, genişletmek için ek mühendislik çabası gerektiği için kendi sistemlerini kurdular
  • Rust, performans kaybı olmadan C’nin yapabildiği işleri memory-safe bir şekilde ikame edebildiği için seçildi
  • Connection pool’u kolayca paylaşmak için work-stealing tarzı bir scheduling sistemi benimsendi ve yeniden kullanım oranı arttı. Önceye kıyasla saniyede yalnızca 1/3 seviyesinde bağlantı kuruluyor
  • Önceye kıyasla CPU %70, bellek ise %67 daha az kullanılıyor
  • İleride açık kaynak olarak yayımlanması planlanıyor

5 yorum

 
functor 2022-09-27

CPU'nun %70, belleğin %67 oranında boşta kalması gerçekten şaşırtıcı..

 
ifmkl 2022-09-16

Vay be, nginx’i de gerçekten çok iyi kullandık; bu açık kaynak olarak çıkarsa hemen denemek isterim.

 
forteleaf 2022-09-16

Rust öğrenseniz de iş bulacak pek yer yok gibi.

 
jungmin1237 2022-09-15

Rust olması hoşuma gitti doğrusu.

 
jjpark78 2022-09-15

Sistem programlamasında en azından Rust giderek daha rakipsiz hale geliyor gibi görünüyor..