OpenResty XRay は、動的トレーシング技術をベースとした非侵入型の診断システムです。従来の APM エージェントとは異なり、デフォルトではターゲットプロセスへのコードインジェクションや変更を一切行いません。分析の実行はユーザーの操作によってのみ開始され、その際に OpenResty XRay エージェントがオンデマンドかつ低頻度で必要なデータを収集します。このオンデマンドサンプリングという設計思想により、本番環境における極めて低いオーバーヘッドと高度なセキュリティが本質的に担保されています。

本番環境でリアルタイムに稼働している Python アプリケーションのパフォーマンス分析を行う際、最大の懸念事項は分析ツール自体が引き起こすオーバーヘッドです。本稿では実測データをもとに、OpenResty XRay エージェントが本番環境において Python アプリケーションに対して動的トレーシング分析を実行した際の、システム CPU・メモリ・負荷、およびアプリケーションのスループットとリクエストレイテンシへの実際の影響を定量的に示します。

測定データによれば、プロファイラーがフル稼働している状態においても、アプリケーションの最大スループットへの影響はわずか 3.4%、平均リクエストレイテンシへの影響はわずか 0.16 ミリ秒にとどまります。また、OpenResty XRay エージェントは分析タスクを実行していない間、パフォーマンスオーバーヘッドは一切発生しません。

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

ベースラインを確立するため、アナライザーの実行前に top コマンドでシステムのパフォーマンス基準値を取得しました。以下の図に示すとおり、対象の gunicorn プロセス(Pythonで実装されたアプリケーション)のCPU使用率は約 46.5% で、システム全体の直近1分間のロードアベレージは 0.7、CPUアイドル率は約 87.2%、空きメモリは約 2632 MB でした。

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

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

分析期間中:システムレベルのリソース変化の記録

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

分析実行中、300秒間継続

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

アナライザーの実行期間中、システムの各指標にわずかな変化が観察されました。

  • 対象プロセスのCPU使用率~48% に上昇し、ベースラインと比較して約1.5パーセントポイント増加しました。
  • システム全体の直近1分間のロードアベレージ0.84 に上昇し、ベースライン値の 0.7 から 0.14 増加しました。
  • CPUアイドル率~86.7% に低下し、ベースラインの 87.2% とほぼ同水準でした。
  • システムの空きメモリ~2631 MB を維持し、約1MBの低下にとどまり、実質的な変化はありませんでした。

アナライザー実行中のシステム指標

アナライザー実行中のシステム指標

以上の結果から、OpenResty XRay アナライザーがサンプリング期間中にシステムレベルのリソース(CPU・メモリ・ロードアベレージ)に与える影響は確認されましたが、その程度は軽微であり、システムの安定稼働を脅かすものではありませんでした。

主要指標:スループットとレイテンシへの影響の正確な計測

オンラインサービスにとって、スループットとレイテンシはパフォーマンスを測る上で欠かせない指標です。この二つのコア指標について、三段階の比較検証を実施しました。

1. 最大スループット

ベンチマークツールを使用して、各状態におけるサーバーの最大スループットを計測しました。

  • OpenResty XRay の Agent がインストールされていない場合、最大スループットは毎秒約 2300 リクエストです。
  • Agent がインストールされているが、プロファイラーが実行されていない場合、最大スループットに変化はありません。
  • プロファイラーがサンプリング中の場合、最大スループットは約 2220 RPS となり、サンプリングなしの場合と比べて 3.4% の低下にとどまります。

計測結果によると、プロファイラーがサンプリング中の場合の最大スループットは毎秒約 2220 リクエストであり、サンプリングなしの場合と比べて 3.4% 低下するにすぎません。

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

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

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

  • OpenResty XRay の Agent がインストールされていない場合、平均リクエストレイテンシは 4.32 ミリ秒です。
  • Agent がインストールされているが、プロファイラーが実行されていない場合、平均リクエストレイテンシに変化はありません。
  • プロファイラーが実行中の場合、リクエストレイテンシは 4.48 ミリ秒となります。増加幅はわずか 0.16 ミリ秒にとどまります。

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

まとめ

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

Insights および Dashboard ページにおける自動分析のオーバーヘッドも、同様に極めて低水準にとどまります。

Insights および Dashboard ページ

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 XRay(マイクロサービスおよび分散トラフィックに最適化された多機能ゲートウェイソフトウェア)は、世界中の多くの上場企業および大企業から高い評価を得ております。OpenResty 以外にも、章亦春は Linux カーネル、Nginx、LuaJITGDBSystemTapLLVM、Perl など、複数のオープンソースプロジェクトに累計 100 万行以上のコードを寄与し、60 以上のオープンソースソフトウェアライブラリを執筆しております。

翻訳

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