Perl アプリケーションの追跡時における OpenResty XRay のシステムパフォーマンスへの影響
このチュートリアルでは、OpenResty XRay が Perl アプリケーションを追跡する際のパフォーマンスへの実際の影響について説明します。OpenResty XRay がターゲットシステムのサンプリングと分析を行う際の CPU、メモリ、平均負荷、トラフィックスループット、リクエストレイテンシーなどを観察します。OpenResty XRay は、当社独自の動的トレース技術に基づく非侵襲型診断システムです。パフォーマンスオーバーヘッドが極めて小さく、実行中のアプリケーションをリアルタイムで分析し、様々な問題の根本原因を特定することができます。
アナライザー実行前のアプリケーションパフォーマンス
OpenResty XRay の Agent は、Perl で書かれたターゲットアプリケーションにどのような影響を与えるのでしょうか?本文章でその答えを提供します。
まず、top
コマンドを実行してプロセスリストを確認します。
現時点では、OpenResty XRay の Agent は分析を実行していません。そのため、ターゲットプロセスへのパフォーマンスの影響は厳密にゼロです。これは動的トレース技術のおかげです。ターゲットプロセスに対して一切の変更を加えることはありません。
perl
という名前のプロセスが確認できます。
CPU 使用率は 49% です。
システム全体の過去 1 分間の平均負荷値は 0.87 です。
現在の CPU アイドル率は約 87% です。
現在の利用可能なメモリは約 2730 MB です。
次に、OpenResty XRay を実行してこの Perl プロセスを積極的に分析してみましょう。これにより、ターゲットプロセスとターゲットシステムへのパフォーマンスの影響を確認することができます。
アナライザー実行中のパフォーマンスへの影響
ブラウザで OpenResty XRay の Web コンソールを開きます。
正しいマシンを分析していることを確認します。
プロダクションモードは、本番環境の分析に使用されます。ターゲットアプリケーションとサーバーのパフォーマンスへの影響を最小限に抑えますが、分析時間が長くなる可能性があります。
「Guided Analysis」ページに移動します。
「High CPU usage」を選択します。
「Next」をクリックします。
先ほど確認した Perl アプリケーションを選択します。
top
コマンドで確認したターゲットプロセスを選択します。
分析を開始します。
システムは複数のラウンドで分析を継続します。
300 秒(5 分間)のサンプリングを継続します。
先ほどの端末ウィンドウに戻ってみましょう。
現在の CPU 使用率は約 50% で、これは以前の値よりわずか 1% 高いだけです。したがって、ターゲットプロセスの CPU 使用率への顕著な影響はありません。
システム全体の過去 1 分間の平均負荷値は 1.04 で、以前の負荷値 0.87 からわずかに上昇しています。
CPU アイドル率は約 85% で、以前の 87% とほぼ変わりません。
現在の利用可能なメモリは約 2725 MB で、以前より 5 MB 減少していますが、通常の変動範囲内です。
アナライザー実行時のスループットとレイテンシーへの実際の影響測定
異なる状況下でのサーバープロセスの最大スループットを測定しました。以下が調査結果です。
OpenResty XRay の Agent がインストールされていない場合、最大スループットは約 1024 リクエスト/秒です。
Agent がインストールされているが分析を実行していない場合、最大スループットは変化しません。
アナライザーがサンプリングを行っている場合、最大スループットは約 1021 リクエスト/秒で、サンプリングを行っていない場合と比べてわずか 0.3% の低下です。
アナライザーの実行が、ターゲットプロセスの最大スループットに与える影響は極めて小さいことがわかります。
次に、サンプリング中のリクエストレイテンシーへの影響を見てみましょう。以下が比較データの結果です。
Agent がインストールされていない場合、平均リクエストレイテンシーは 1250 マイクロ秒です。
Agent がインストールされているがアナライザーが実行されていない場合、平均リクエストレイテンシーに変化はありません。
アナライザーが実行中の場合、リクエストレイテンシーは 1270 マイクロ秒となり、わずか 20 マイクロ秒の増加です。
したがって、アナライザーの実行がリクエストレイテンシーに与える影響も極めて小さいことが実証されました。
Web Console に戻ります。
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(マイクロサービスおよび分散トラフィックに最適化された多機能
翻訳
英文版の原文と日本語訳版(本文)をご用意しております。読者の皆様による他の言語への翻訳版も歓迎いたします。全文翻訳で省略がなければ、採用を検討させていただきます。心より感謝申し上げます!