このチュートリアルでは、OpenResty XRay が Perl アプリケーションを追跡する際のパフォーマンスへの実際の影響について説明します。OpenResty XRay がターゲットシステムのサンプリングと分析を行う際の CPU、メモリ、平均負荷、トラフィックスループット、リクエストレイテンシーなどを観察します。OpenResty XRay は、当社独自の動的トレース技術に基づく非侵襲型診断システムです。パフォーマンスオーバーヘッドが極めて小さく、実行中のアプリケーションをリアルタイムで分析し、様々な問題の根本原因を特定することができます。

アナライザー実行前のアプリケーションパフォーマンス

OpenResty XRay の Agent は、Perl で書かれたターゲットアプリケーションにどのような影響を与えるのでしょうか?本文章でその答えを提供します。

perlcover.png

まず、top コマンドを実行してプロセスリストを確認します。

Screenshot

現時点では、OpenResty XRay の Agent は分析を実行していません。そのため、ターゲットプロセスへのパフォーマンスの影響は厳密にゼロです。これは動的トレース技術のおかげです。ターゲットプロセスに対して一切の変更を加えることはありません。

Screenshot

perl という名前のプロセスが確認できます。

Screenshot

CPU 使用率は 49% です。

Screenshot

システム全体の過去 1 分間の平均負荷値は 0.87 です。

Screenshot

現在の CPU アイドル率は約 87% です。

Screenshot

現在の利用可能なメモリは約 2730 MB です。

Screenshot

次に、OpenResty XRay を実行してこの Perl プロセスを積極的に分析してみましょう。これにより、ターゲットプロセスとターゲットシステムへのパフォーマンスの影響を確認することができます。

Screenshot

アナライザー実行中のパフォーマンスへの影響

ブラウザで OpenResty XRay の Web コンソールを開きます。

Screenshot

正しいマシンを分析していることを確認します。

Screenshot

プロダクションモードは、本番環境の分析に使用されます。ターゲットアプリケーションとサーバーのパフォーマンスへの影響を最小限に抑えますが、分析時間が長くなる可能性があります。

Screenshot

「Guided Analysis」ページに移動します。

Screenshot

「High CPU usage」を選択します。

Screenshot

「Next」をクリックします。

Screenshot

先ほど確認した Perl アプリケーションを選択します。

Screenshot

top コマンドで確認したターゲットプロセスを選択します。

Screenshot

分析を開始します。

Screenshot

システムは複数のラウンドで分析を継続します。

Screenshot

300 秒(5 分間)のサンプリングを継続します。

Screenshot

先ほどの端末ウィンドウに戻ってみましょう。

Screenshot

現在の CPU 使用率は約 50% で、これは以前の値よりわずか 1% 高いだけです。したがって、ターゲットプロセスの CPU 使用率への顕著な影響はありません。

Screenshot

システム全体の過去 1 分間の平均負荷値は 1.04 で、以前の負荷値 0.87 からわずかに上昇しています。

Screenshot

CPU アイドル率は約 85% で、以前の 87% とほぼ変わりません。

Screenshot

現在の利用可能なメモリは約 2725 MB で、以前より 5 MB 減少していますが、通常の変動範囲内です。

Screenshot

アナライザー実行時のスループットとレイテンシーへの実際の影響測定

異なる状況下でのサーバープロセスの最大スループットを測定しました。以下が調査結果です。

Screenshot

OpenResty XRay の Agent がインストールされていない場合、最大スループットは約 1024 リクエスト/秒です。

Screenshot

Agent がインストールされているが分析を実行していない場合、最大スループットは変化しません。

Screenshot

アナライザーがサンプリングを行っている場合、最大スループットは約 1021 リクエスト/秒で、サンプリングを行っていない場合と比べてわずか 0.3% の低下です。

Screenshot

アナライザーの実行が、ターゲットプロセスの最大スループットに与える影響は極めて小さいことがわかります。

Screenshot

次に、サンプリング中のリクエストレイテンシーへの影響を見てみましょう。以下が比較データの結果です。

Screenshot

Agent がインストールされていない場合、平均リクエストレイテンシーは 1250 マイクロ秒です。

Screenshot

Agent がインストールされているがアナライザーが実行されていない場合、平均リクエストレイテンシーに変化はありません。

Screenshot

アナライザーが実行中の場合、リクエストレイテンシーは 1270 マイクロ秒となり、わずか 20 マイクロ秒の増加です。

Screenshot

したがって、アナライザーの実行がリクエストレイテンシーに与える影響も極めて小さいことが実証されました。

Screenshot

Web Console に戻ります。

Screenshot

Insights や Dashboard ページでの自動分析の処理負荷も非常に低く、先ほど確認したものと同様の水準となっています。

Screenshot

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

翻訳

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