Cloudflare、Rustで書かれた独自のプロキシ「Pingora」の採用により性能向上とメモリ消費量削減を実現

masapoco
投稿日 2022年9月16日 4:55

Cloudflareは、コンテンツ配信ネットワークをRustで書かれたことで注目されている「Pingora」プロキシを使用するように移行すると発表した。この新しいプロキシは、NGINXサーバーベースの構成をLuaスクリプトに置き換え、1日あたり10億以上のリクエストを処理するという。

専用プロキシ「Pingora」への移行により、新機能の実装や、メモリを安全に扱うことによるセキュリティの向上だけでなく、パフォーマンスの大幅な向上やリソースの節約につながったと、同社は述べている。

Pingoraベースのソリューションでは、Luaを使用する必要がなく、Cloudflareの負荷最適化アーキテクチャを使用しているため、同じ量のトラフィックを処理しながら、CPUリソースを70%、メモリを67%削減することができます。

Cloudflare

長い間、NGINXとLuaスクリプトをベースにしたユーザーとエンドサーバー間のトラフィックプロキシシステムがCloudflareのニーズを満たしていたが、ネットワークの成長と複雑化に伴い、パフォーマンスの面でも、拡張性や顧客の新しい機会の実装における限界の面でも、ユニバーサルソリューションでは十分ではなくなってきた。

特に、単純なゲートウェイやロードバランサー以上の機能を追加することには困難があった。例えば、サーバーがリクエストを処理できない場合、別のサーバーにリクエストをリダイレクトし、別のHTTPヘッダーを提供する必要があった。

Pingoraは、リクエストを個別の作業プロセス(ワーカー)に分割するアーキテクチャではなく、マルチスレッドモデルを採用しており、Cloudflareの利用シナリオ(統計的変化の大きい異なるサイトからのトラフィックが集中)では、CPUコア間のリソース配分がより効率的であることが示されている。

特に、nginxで偏ったリクエストをプロセスにバインドすると、CPUコアの負荷が偏り、その結果、リソースを多く消費するリクエストやI/Oのブロックが他のリクエストの処理を遅くしてしまうという問題がありました。

また、ドライバプロセスに接続プールをバインドすると、すでに確立された他のドライバプロセスからの接続を再利用できないため、ドライバプロセス数が多い場合に効率が低下することがありました。

Cloudflare

Pingora の導入により、新規接続確立のオペレーションが160倍に減少し、再利用されるリクエストの割合が87.1%から99.92%へと増加した。再接続の減少やCPUコアの効率的な利用に加え、新しいプロキシの性能向上は、主にnginxで使われていた低速なLuaドライバを排除したことによるものだ。

Rust言語が選ばれた理由は、高いパフォーマンスとメモリーセーフツールの利用が可能であるためだ。Cloudflareのエンジニアの高い資質とコードレビューにもかかわらず、C言語で書かれたプログラムでは、メモリ問題につながるバグ(HTML パーサーの脆弱性など)を回避することができなかったと述べている。

新しいコードについては、Pingoraのクラッシュ解析で、アプリケーションの問題ではなく、Linuxカーネルのバグやハードウェアの故障が原因であることが判明している。

さらに、Linus Torvalds氏が、LinuxカーネルにRust言語のサポートが含まれることについて、先日開催されたOpen-Source Summit Europeのカンファレンスで表明したコメントも注目される。カーネル6.0 は、Rustでのデバイス ドライバーを開発するパッチが含まれていないが、Torvalds氏によると、それはカーネル 6.1 では、統合を利用しないように受け入れられる可能性が高い。

Rustのサポートを追加する理由として、セキュリティへの好影響に加え、Torvalds氏は、ベテランが高齢化する中で重要な、新規参入者のカーネルへの取り組みへの関心を高める機会にもなると考えているようだ。

最後に、ご興味のある方は、以下のリンク先で詳細をご確認頂きたい。


Source



この記事が面白かったら是非シェアをお願いします!


  • Apple iPhone 14 iPhone 14 Plus hero 220907 geo Full Bleed Image.large 2x
    次の記事

    iPhone 14 海外レビューまとめ – 進化の少ない点に概ね厳しい評価

    2022年9月16日 6:43
  • 前の記事

    科学者たちは、太陽系全域でエイリアンの人工物を探している。その理由とは

    2022年9月15日 18:30
この記事を書いた人
masapoco

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


おすすめ記事

  • servo linux

    Rustで開発のオープンソースレンダリングエンジン「Servo」の開発が進む

  • programming language

    ホワイトハウス、開発者に“メモリ・セーフ”なプログラミング言語への移行を促す

  • microsoft

    Microsoft、WindowsコアコンポーネントをC/C++からRustに書き換えるためのチームを結成

  • Radar Year in Review 2023

    Cloudflare、2023年インターネットトラフィックに関する様々な統計データを発表

  • server large 2

    Cloudflareが次世代サーバーの設計を発表、増加するCPUのTDPに対応し1Uから2Uサーバーへ

今読まれている記事