Cloudflareがnginxを外し、RustでHTTPプロキシ(Pingora)を作って運用
(blog.cloudflare.com)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件のコメント
CPU 70%、メモリ 67% というのは驚きですね…
へえ、nginx も本当によく使ったけど、これがオープンソースで出たらすぐ試してみたいですね
Rustを勉強しても就職先がないですね
Rustとは、気に入りましたね
システムプログラミングに関しては、Rustがますます独走状態になってきていますね..