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

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

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

videocover.png

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

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

Screenshot

Go 言語で書かれた gin-helloworld というプロセスが確認できます。

Screenshot

CPU 使用率は約 43% となっています。

Screenshot

過去 1 分間の平均負荷は 0.62 です。

Screenshot

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

Screenshot

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

Screenshot

OpenResty XRay を実行して、この Go プロセスをアクティブに分析してみましょう。これにより、対象のパフォーマンスへの影響を確認することができます。

Screenshot

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

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

Screenshot

現在分析している対象マシンが正しいことを確認します。

Screenshot

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

Screenshot

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

Screenshot

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

Screenshot

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

Screenshot

Go アプリケーションを選択します。

Screenshot

分析を開始します。

Screenshot

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

Screenshot

300 秒、つまり 5 分間のサンプリングを継続します。

Screenshot

先ほどのターミナルウィンドウに戻ってみましょう。

Screenshot

現在の CPU 使用率は約 47% であることがわかります。これは先ほど確認した 43% よりもわずかに高くなっています。したがって、対象プロセスの CPU 使用率への顕著な影響は見られません。

Screenshot

過去 1 分間の平均負荷は 0.63 で、以前の値 0.62 とほとんど変わりません。

Screenshot

CPU アイドル率は 85% で、以前の 84% とほぼ同じです。

Screenshot

現在の利用可能なメモリは約 1622MB で、以前より 76MB 増加しています。

Screenshot

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

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

Screenshot

OpenResty XRay の Agent がインストールされていない状態では、最大スループットは約 24,500 リクエスト/秒でした。

Screenshot

Agent はインストールされているがアナライザーが実行されていない状態では、最大スループットは変化しませんでした。

Screenshot

アナライザーがサンプリング中の場合、最大スループットは約 24,100 RPS となり、サンプリングを行っていない場合と比べてわずか 1.5% の低下に留まりました。

Screenshot

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

Screenshot

このパフォーマンステストでは、サンプリング中のリクエスト遅延への影響を示しています。比較データから以下のことがわかりました:

Screenshot

OpenResty XRay の Agent がインストールされていない状態では、平均リクエスト遅延は 406 マイクロ秒でした。

Screenshot

Agent はインストールされているがアナライザーが実行されていない状態では、平均リクエスト遅延に変化はありませんでした。

Screenshot

アナライザーの実行中は、リクエスト遅延は 412 マイクロ秒となり、わずか 6 マイクロ秒の増加に留まりました。

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

翻訳

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