本番環境で稼働中の Rust アプリケーションを分析する際、最大の懸念は問題を特定できるかどうかではなく、分析ツール自体が本番サービスの足を引っ張らないかという点です。本番モードで稼働中の rocket-server(Rust 製)アプリケーションで OpenResty XRay のオーバーヘッドを実測したところ、サンプリング中の最大スループットの低下はわずか 2.2%、平均レイテンシの増加はわずか 1.12 マイクロ秒であり、Agentがアイドル状態のときのオーバーヘッドは完全にゼロでした。 これが可能なのは、従来の常駐型 APM Agentとは異なり、ターゲットプロセスへのコードインジェクションや変更を一切行わず、ユーザーが分析を明示的に開始したときにのみ低頻度でデータを収集するためです。以下では、項目ごとの実測データをもとに、CPU・メモリ・負荷、およびスループットとレイテンシへの実際の影響を示します。詳しい手順は、本記事冒頭の動画版をご覧ください。

テスト環境とパフォーマンスベースライン

比較基準を確立するため、プロファイラーの実行前に top コマンドでシステムのパフォーマンスベースラインを計測しました。以下の図に示すとおり、対象の rocket-server プロセス(Rust製アプリケーション)のCPU使用率は約 73%、システム全体の直近1分間のロードアベレージは 0.86、CPUアイドル率は約 74.3%、空きメモリは約 1566 MB でした。

Rustプロセスのベースライン

分析中、CPU・メモリ・ロードアベレージにどのような影響があるか?

実際の診断シナリオを再現するため、OpenResty XRay コンソールから、本番モードにて対象のRustプロセスに対し、300秒(5分間)の「High CPU usage」シナリオ分析を実施しました(操作パス:Guided Analysis → High CPU usage → 対象プロセスを選択)。

プロファイラー実行中のシステム指標

「本番モード」の選択はきわめて重要です。本番モードは本番環境向けに設計されており、低頻度のサンプリングをはじめとする各種最適化により、システムへのパフォーマンス影響を最小限に抑えることを目的としています。ただし、その分、分析に要する時間が長くなる場合があります。

プロファイラーの実行期間中、システムの各指標にわずかな変化が観測されました。

  • 対象プロセスのCPU使用率~74% に上昇。ベースラインと比較して1ポイント未満の増加にとどまりました。
  • システム全体の直近1分間のロードアベレージ0.92 に上昇。従来の0.86から0.06の増加となりました。
  • CPUアイドル率~74.5% を維持。ベースラインの74.3%とほぼ変わりませんでした。
  • 空きメモリ~1564 MB に低下。約2MBの減少にとどまり、実質的な変化は見られませんでした。

プロファイラー実行中のシステム指標

サンプリング中の空きメモリ 1563.5 MB を示す top の出力

以上の結果から、OpenResty XRay のプロファイラーはサンプリング期間中、CPU・メモリ・ロードアベレージといったシステムレベルのリソースに一定の影響を与えるものの、その影響は軽微であり、システムの安定稼働を損なうことはありませんでした。

分析はスループットとレイテンシにどの程度影響するか?

本番サービスにおいて、スループットとレイテンシはパフォーマンスを評価する上で最も重要な指標です。本検証では、この 2 つの主要指標について、3 種類の比較テストを実施しました。以下の表は、三つの状態における結果をまとめたものです。

シナリオ最大スループット平均レイテンシ
OpenResty XRay Agent未インストール約 56,600 RPS37.79 マイクロ秒
Agent導入済み・プロファイラーはアイドル約 56,600 RPS(変化なし)37.79 マイクロ秒(変化なし)
プロファイラーがサンプリング中約 55,300 RPS(−2.2%38.91 マイクロ秒(+1.12 マイクロ秒

1. 最大スループット

負荷テストツールを使用して、各状態におけるサーバーの最大スループットを測定しました。

  • OpenResty XRay の Agent がインストールされていない場合、最大スループットは毎秒約 56,600 リクエストです。
  • Agent がインストール済みでプロファイラーが未実行の場合、最大スループットに変化はありません。
  • プロファイラーがサンプリング実行中の場合、最大スループットは約 55,300 RPS となり、サンプリングなしの場合と比較して 2.2% の低下にとどまります。

この結果から、プロファイラーの実行が対象プロセスの最大スループットに与える影響は極めて小さいことが確認されました。

プロファイラー実行時のスループット

2. 平均リクエストレイテンシ

サンプリング実行中におけるリクエストレイテンシへの影響を測定しました。

  • OpenResty XRay の Agent がインストールされていない場合、平均リクエストレイテンシは 37.79 マイクロ秒です。
  • Agent がインストール済みでプロファイラーが未実行の場合、平均リクエストレイテンシに変化はありません。
  • プロファイラーが実行中の場合、リクエストレイテンシは 38.91 マイクロ秒となり、1.12 マイクロ秒 の増加にとどまります。

この結果から、プロファイラーの実行が対象プロセスのリクエストレイテンシに与える影響も極めて小さいことが実証されました。

プロファイラー実行時のリクエストレイテンシ

まとめ

システムリソース、アプリケーションスループット、リクエストレイテンシの包括的な測定結果から、OpenResty XRay の動的トレーシングアーキテクチャは、本番環境の Rust アプリケーションに対してリアルタイム診断を実施する際のパフォーマンスオーバーヘッドが定量化・予測可能であり、主要なビジネス指標への影響が極めて軽微であることが確認されました。これにより、本ツールが本番環境において安全・安心に継続的に活用できるパフォーマンス分析ツールであることが実証されました。

Insights および Dashboard ページにおける自動分析のオーバーヘッドも、同様に極めて低く抑えられています。

Rust アプリケーションで実際に CPU の問題を調査している場合は、Sled の最もホットなコードパスを特定した事例をご覧ください:Rust CPU プロファイリング。同じ本番モードでのオーバーヘッド実測は他の言語でも行っています。GoPHPPythonPerl アプリケーションの結果もご覧ください。

OpenResty XRay と常駐型 APM Agentの比較

オーバーヘッドをこれほど低く抑えられる理由は、アーキテクチャの違いにあります。従来の APM Agentはターゲットプロセスにコードをインジェクションし、継続的にデータを収集するため、誰も監視していないときでも常にランタイムオーバーヘッドが発生します。OpenResty XRay はその逆のアプローチを取り、非侵入型でオンデマンドのサンプリングのみを行います。

従来の常駐型 APM AgentOpenResty XRay
データ収集継続的・常時稼働オンデマンド、ユーザーが分析を開始したときのみ
ターゲットプロセスコードインジェクション / 計装非侵入型、コードを変更しない
アイドル時のオーバーヘッド常時発生完全にゼロ
サンプリング時のオーバーヘッド常時発生スループット約 2.2%、レイテンシ +1.12 マイクロ秒

よくある質問

OpenResty XRay は本番環境の Rust アプリケーションにどの程度のパフォーマンスオーバーヘッドをもたらしますか?

分析の実行中、OpenResty XRay は最大スループットを約 2.2%(毎秒約 56,600 リクエストから約 55,300 リクエストへ)低下させ、平均レイテンシを約 1.12 マイクロ秒(37.79 マイクロ秒から 38.91 マイクロ秒へ)増加させます。Agentが導入済みでもサンプリングを行っていない場合はスループットとレイテンシに変化はなく、アイドル状態ではオーバーヘッドは完全にゼロです。

本番環境の Rust アプリケーションで OpenResty XRay を実行しても安全ですか?

はい。OpenResty XRay のAgentは非侵入型で、ターゲットプロセスへのコードインジェクションや変更を一切行わず、ユーザーが明示的に分析を開始したときにのみ低頻度でデータを収集します。稼働中の rocket-server プロセスに対する 300 秒間の本番モード分析では、直近 1 分間のロードアベレージは 0.86 から 0.92 に上昇しただけ、ターゲットプロセスの CPU 使用率も約 73% から約 74% に上昇しただけであり、本番環境で継続的に導入できます。

分析を実行していないとき、OpenResty XRay は Rust アプリケーションの速度を低下させますか?

いいえ。Agentはユーザーが開始した分析の実行中にのみデータを収集します。導入済みでもアイドル状態のときは、最大スループットとリクエストレイテンシはAgentがまったくない場合と同一であり、パフォーマンスオーバーヘッドは完全にゼロです。

OpenResty XRay のオーバーヘッドは、従来の常駐型 APM Agentと比べてどうですか?

従来の APM Agentはターゲットプロセスにコードをインジェクションして継続的に稼働するため、常にオーバーヘッドが発生します。一方 OpenResty XRay はオンデマンドで低頻度のサンプリングを行うため、アイドル時のオーバーヘッドはゼロで、サンプリング中でもスループットへの影響は約 2.2% にとどまります。

OpenResty XRay は Rust プロセスの分析中にどれだけの CPU とメモリを使用しますか?

rocket-server プロセスのサンプリング中、ターゲットプロセスの CPU 使用率はベースラインの約 73% から約 74%(1 パーセントポイント未満)に上昇し、CPU アイドル率は約 74.5%(ベースライン 74.3%)を維持し、空きメモリは約 1564 MB で、減少は約 2 MB にとどまりました。

OpenResty XRay について

OpenResty XRay動的トレーシング製品であり、実行中のアプリケーションを自動的に分析して、パフォーマンスの問題、動作の問題、セキュリティの脆弱性を診断し、実行可能な提案を提供いたします。基盤となる実装において、OpenResty XRay は弊社の Y 言語によって駆動され、Stap+、eBPF+、GDB、ODB など、様々な環境下で複数の異なるランタイムをサポートしております。

著者について

章亦春(Zhang Yichun)は、オープンソースの OpenResty® プロジェクトの創始者であり、OpenResty Inc. の CEO および創業者です。

章亦春(GitHub ID: agentzh)は中国江蘇省生まれで、現在は米国ベイエリアに在住しております。彼は中国における初期のオープンソース技術と文化の提唱者およびリーダーの一人であり、Cloudflare、Yahoo!、Alibaba など、国際的に有名なハイテク企業に勤務した経験があります。「エッジコンピューティング」、「動的トレーシング」、「機械プログラミング」 の先駆者であり、22 年以上のプログラミング経験と 16 年以上のオープンソース経験を持っております。世界中で 4000 万以上のドメイン名を持つユーザーを抱えるオープンソースプロジェクトのリーダーとして、彼は OpenResty® オープンソースプロジェクトをベースに、米国シリコンバレーの中心部にハイテク企業 OpenResty Inc. を設立いたしました。同社の主力製品である OpenResty XRay動的トレーシング技術を利用した非侵入型のプロファイリング・トラブルシューティングツール)と OpenResty Edge(マイクロサービスおよび分散トラフィックに最適化された多機能ゲートウェイソフトウェア)は、世界中の多くの上場企業および大企業から高い評価を得ております。OpenResty 以外にも、章亦春は Linux カーネル、Nginx、LuaJITGDBSystemTapLLVM、Perl など、複数のオープンソースプロジェクトに累計 100 万行以上のコードを寄与し、60 以上のオープンソースソフトウェアライブラリを執筆しております。

翻訳

英文版の原文と日本語訳版(本文)をご用意しております。読者の皆様による他の言語への翻訳版も歓迎いたします。全文翻訳で省略がなければ、採用を検討させていただきます。心より感謝申し上げます!