26 ポイント 投稿者 yunyun0505 2022-09-15 | 5件のコメント | WhatsAppで共有

nginxには限界があった

  • リクエストごとに単一のworkerしか使わないため、CPUコアの利用に偏りがあった
  • workerごとにconnection poolが存在するため、TCPおよびTLS接続の再利用率が低くなり、TTFBが高くなっていた
  • また、nginxの運用に必要な機能も独自実装していたが、Cで設計されたnginxはメモリ安全ではなく、熟練したエンジニアでもミスをすることがあった

Pingora

  • CloudflareにはRFC非準拠のリクエストも多く届くが、他社ライブラリ(hyper)はRFCに厳格な実装になっており、拡張には追加の工数がかかるため自前で構築
  • Rustは性能低下なしにメモリ安全な形でCができることを置き換えられるため採用
  • 接続プールを簡単に共有するため、work-stealing方式のスケジューリングシステムを導入し、再利用率が向上。以前と比べて毎秒確立するコネクション数は3分の1水準になった
  • 以前と比べてCPUは70%、メモリは67%少なく使用
  • 今後オープンソースとして公開予定

5件のコメント

 
functor 2022-09-27

CPU 70%、メモリ 67% というのは驚きですね…

 
ifmkl 2022-09-16

へえ、nginx も本当によく使ったけど、これがオープンソースで出たらすぐ試してみたいですね

 
forteleaf 2022-09-16

Rustを勉強しても就職先がないですね

 
jungmin1237 2022-09-15

Rustとは、気に入りましたね

 
jjpark78 2022-09-15

システムプログラミングに関しては、Rustがますます独走状態になってきていますね..