Go アプリケーションの追跡時における OpenResty XRay のシステムパフォーマンスへの影響
OpenResty XRay は、ダイナミックトレーシング技術に基づくノンイントルーシブな診断システムです。従来の APM エージェントとは異なり、デフォルトではターゲットプロセスへのコードの注入や改変を一切行いません。分析の実行はユーザーの指示によってのみ開始され、OpenResty XRay エージェントは必要に応じて低頻度でデータを収集します。このオンデマンドサンプリングという設計思想により、本番環境における極めて低いオーバーヘッドと高い安全性が本質的に担保されています。
本番環境でリアルタイムに稼働している Go アプリケーションのパフォーマンス分析において、最大の懸念事項は分析ツール自体が引き起こす性能オーバーヘッドです。本稿では実測データをもとに、OpenResty XRay エージェントが本番環境において Go アプリケーションに対してダイナミックトレーシング分析を実行した際の、システム CPU・メモリ・負荷、およびアプリケーションのスループットとリクエストレイテンシへの実際の影響を明確に示します。
計測結果が示すとおり、プロファイラーが最大負荷で動作している間も、アプリケーションの最大スループットへの影響はわずか 1.5%、平均リクエストレイテンシへの影響はわずか 6 マイクロ秒にとどまります。また、OpenResty XRay エージェントは分析タスクを実行していない間、性能オーバーヘッドは完全にゼロとなります。
テスト環境とパフォーマンスベースライン
比較基準を確立するため、プロファイラーの実行前に top コマンドでシステムのパフォーマンスベースラインを取得しました。以下のスクリーンショットに示すように、対象の gin-helloworld プロセス(Go 製アプリケーション)の CPU 使用率は約 43%、システム全体の直近 1 分間のロードアベレージは 0.62、CPU アイドル率は約 84%、空きメモリは約 1546 MB でした。
分析期間:システムレベルのリソース変化の実録
実際の診断シナリオを再現するため、OpenResty XRay コンソールから本番モードで対象の Go プロセスに対し、300 秒(5 分間)の “High CPU usage” シナリオ分析を実施しました(操作パス:Guided Analysis → High CPU usage → 対象プロセスを選択)。
「本番モード」の選択は非常に重要です。このモードは本番環境向けに設計されており、低頻度サンプリングなどの最適化を通じてパフォーマンスへのオーバーヘッドを最小限に抑えることを目的としています。ただし、その分、分析に要する時間が長くなる場合があります。
プロファイラーの実行期間中、システムの各指標にわずかな変化が確認されました:
- 対象プロセスの CPU 使用率:~47% に上昇し、ベースライン比で約 4 パーセントポイント増加しました。
- システム全体の直近 1 分間のロードアベレージ:0.63 に上昇しましたが、ベースラインの 0.62 からほとんど変化がありませんでした。
- CPU アイドル率:~85% を維持し、ベースラインの 84% とほぼ同水準でした。
- 空きメモリ:~1622 MB に上昇し、ベースライン比で 76 MB 増加しました。
以上の結果から、OpenResty XRay プロファイラーはサンプリング期間中にシステムレベルのリソース(CPU・メモリ・ロードアベレージ)への影響は認められるものの、その影響は軽微であり、システムの安定性に支障をきたすものではありませんでした。
主要指標:スループットとレイテンシへの影響の正確な計測
オンラインサービスにとって、スループットとレイテンシはパフォーマンスを測る上で最も重要な指標です。この2つの主要指標について、3回の比較テストを実施しました。
1. 最大スループット
負荷テストツールを使用して、各状態におけるサーバーの最大スループットを計測しました。
- OpenResty XRay の Agent がインストールされていない場合、最大スループットは約 24,500 RPS です。
- Agent がインストールされているがプロファイラーが実行されていない場合、最大スループットに変化はありません。
- プロファイラーがサンプリング中の場合、最大スループットは約 24,100 RPS となり、サンプリングなしの場合と比べてわずか 1.5% の低下にとどまります。
この結果から、プロファイラーの実行が対象プロセスの最大スループットに与える影響は極めて小さいことが確認されました。
2. 平均リクエストレイテンシ
サンプリング中におけるリクエストレイテンシへの影響を計測しました。
- OpenResty XRay の Agent がインストールされていない場合、平均リクエストレイテンシは 406 マイクロ秒です。
- Agent がインストールされているがプロファイラーが実行されていない場合、平均リクエストレイテンシに変化はありません。
- プロファイラーが実行中の場合、リクエストレイテンシは 412 マイクロ秒となり、増加はわずか 6 マイクロ秒にとどまります。
この結果は、プロファイラーの実行が対象プロセスのリクエストレイテンシに与える影響も極めて小さいことを示しています。
なお、“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(マイクロサービスおよび分散トラフィックに最適化された多機能
翻訳
英文版原文と日本語訳版(本文)をご用意しております。読者の皆様による他の言語への翻訳版も歓迎いたします。全文翻訳で省略がなければ、採用を検討させていただきます。心より感謝申し上げます!

























