OpenResty XRay は、動的トレーシング技術を基盤とした非侵入型の診断システムです。従来の APM エージェントとは異なり、デフォルトではターゲットプロセスへのコードの注入や改変を一切行いません。ユーザーが分析を開始した場合にのみ、OpenResty XRay エージェントは必要に応じて低頻度でデータを収集します。このオンデマンドサンプリングという設計思想が、本番環境における極めて低いオーバーヘッドと高い安全性を根底から支えています。

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

測定データが示すように、プロファイラーがフル稼働している間でも、アプリケーションの最大スループットへの影響は 0.3% 未満にとどまり、平均リクエストレイテンシへの影響はわずか 20 マイクロ秒です。また、OpenResty XRay エージェントは分析タスクを実行していない場合、パフォーマンスへの影響は一切ありません。

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

比較基準を確立するため、プロファイラーの実行前に top コマンドでシステムのパフォーマンスベースラインを記録しました。下図に示すとおり、対象の perl プロセスの CPU 使用率は約 49%、システム全体の直近 1 分間の平均負荷値は 0.87、現在の CPU アイドル率は約 87%、空きメモリは約 2730 MB となっています。

perl プロセス

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

実際の診断シナリオを再現するため、OpenResty XRay コンソールから本番モードで対象の Perl プロセスに対し、300 秒(5 分間)にわたる「High CPU usage」シナリオ分析を実施しました。

本番モードの選択

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

下図は分析タスクの実行中の状態を示しています。

分析進行中、300 秒継続

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

  • 対象プロセスの CPU 使用率: ~50% に上昇し、ベースライン比で約 1 パーセントポイントの増加となりました。
  • システム全体の直近 1 分間の平均負荷値: 1.04 に上昇し、ベースラインの 0.87 から小幅に増加しました。
  • CPU アイドル率: ~85% に低下しましたが、ベースラインの 87% との差はわずかです。
  • システムの空きメモリ: ~2725 MB に低下し、約 5 MB の減少となりましたが、通常の変動範囲内に収まります。

分析期間中の空きメモリ 2725 MB

以上の結果から、OpenResty XRay プロファイラーはサンプリング期間中にシステムレベルのリソース(CPU・メモリ・負荷)に一定の影響を与えるものの、その影響は軽微であり、システムの安定性を損なうものではありません。

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

本番サービスにおいて、スループットとレイテンシはパフォーマンスを測る上で最も重要な指標です。本検証では、この2つの主要指標について3回の比較検証を実施しました。

1. 最大スループット

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

  • Agent なし状態: 1024 req/s

Agent なし時の最大スループット 1024 req/s

  • Agent インストール済み・プロファイラー未起動時: 1024 req/s(変化なし)

Agent サイレント時のスループットは変化なし

  • プロファイラー実行状態: 1021 req/s

プロファイラー実行時のスループット 1021 req/s

測定結果によると、プロファイラーがサンプリング中の最大スループットは毎秒約 1021 リクエストであり、サンプリングなしの場合と比較して、低下幅はわずか 0.3% にとどまります。

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

高並行負荷下においてクライアント側で観測される平均リクエストレイテンシを測定しました。

  • Agent なし状態: 1250 マイクロ秒

Agent なし時の平均レイテンシ 1250 μs

  • Agent インストール済み・プロファイラー未起動時: 1250 マイクロ秒(変化なし)

Agent サイレント時のレイテンシは変化なし

  • プロファイラー実行状態: 1270 マイクロ秒

プロファイラー実行時のレイテンシ 1270 μs

測定結果によると、プロファイラーの実行による平均リクエストレイテンシの増加はわずか 20 マイクロ秒にとどまりました。

まとめ

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

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 以上のオープンソースソフトウェアライブラリを執筆しております。

翻訳

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