オンラインでの Perl アプリケーションにおけるプログラム例外の監視(OpenResty XRay を使用)
このチュートリアルでは、OpenResty XRayを使用して Perl アプリケーションのプログラム例外をオンラインで検出・分析する方法について説明します。OpenResty XRay は、Perl のオンラインプロセスにおけるコード例外を検出・分析することができ、プロセスのクラッシュを引き起こさない捕捉された例外も含まれます。これらのコードパスは、OpenResty XRayが Perl のソースコードレベルの例外フレームグラフを自動的に分析・解釈することで得られます。パフォーマンスへの影響を最小限に抑えるため、OpenResty XRay はパフォーマンスのオーバーヘッドと遅延に敏感な本番環境に非常に適しています。
Perl アプリケーションのプログラム例外を分析する
ブラウザで OpenResty XRay の Web コンソールを開きます。
現在分析中のマシンが正しいことを確認してください。
正しくない場合は、リストから再選択することができます。
「Guided Analysis」ページに移動します。
ここでは、システムが分析可能な様々な種類の問題を確認できます。
「Errors & exceptions」を選択します。
「Next」をクリックします。
先ほどの Perl アプリケーションを選択します。
ここでは「Whole application」を選択します。
アプリケーションのタイプが正しいことを確認します。通常、デフォルト値が正しいです。
OpenResty XRay は、様々な言語レベルで分析を行うことができます。ここでは Perl と C/C++ の両方を選択したままにします。
最長分析時間を設定することもできます。ここではデフォルトの 300 秒のままにします。
分析を開始します。
システムは複回数の分析を継続的に実行します。現在、初回の分析を実行中です。
初回の分析が完了し、現在 2 回目のラウンドに入っております。この例では、1 回の分析で十分です。
分析を停止します。
自動生成された分析レポートが表示されます。
これは分析対象の問題タイプである Errors & exceptions です。
レポートは、最も多くの Perl プログラム例外を発生させているコードパスを示しています。
Perl_die
は Perl 仮想マシン内部で例外を投げるために使用される関数です。
Core
モジュール下の download_file
は、ビジネスロジックでファイルをダウンロードするための関数です。
この一連の関数は Dancer 2 ウェブフレームワークに属しています。
例えば、Core::Route::execute
は一致したルートのハンドラ関数を実行します。
_dispatch_route
は現在の Web リクエストを対応するルートハンドラにディスパッチするために使用されます。
「More」をクリックすると、さらに詳細が表示されます。
このホットコードパスは、Perl レベルの例外フレームグラフから自動的に導き出されたものです。
以下は、問題に関するより詳細な説明と提案です。
ここでは、perl_die
関数がエラーメッセージを通じて Perl スクリプト実行時の例外を検出できることが言及されています。
先ほど見た download_file
関数について説明しています。
元のホットコードパスに戻りましょう。
この関数の緑色のボックスにマウスを合わせてください。
ツールチップには Perl 関数のソースファイル名とフルパスが表示されます。
この Perl ソースコードの行番号は 100 です。
このアイコンをクリックして、関数のソースファイルパスをコピーします。
vim エディタでソースファイルを開きます。先ほどコピーしたファイルパスを貼り付けます。お好みのエディタを使用していただいて構いません。
OpenResty XRay が提案したように、100 行目にジャンプします。
これは、Perl の配列変数参照をハッシュテーブル参照として扱おうとした際に発生する状況です。この例外は実際には上位の Perl コードによってキャッチされるため、アプリケーションが終了することはありません。それでも、OpenResty XRay はこのような例外を正確に検出し、ユーザーに報告することができます。
自動生成レポート
OpenResty XRay はオンラインプロセスを自動的に監視し、分析レポートを生成することもできます。
「Insights」ページに切り替えます。
「Insights」ページで、日次および週次の自動レポートを見つけることができます。そのため、「Guided Analysis」機能を使用する必要はありません。
もちろん、「Guided Analysis」はアプリケーションの開発とデモンストレーションに非常に有用です。
著者について
章亦春(Zhang Yichun)は、オープンソースの OpenResty® プロジェクトの創始者であり、OpenResty Inc. の CEO および創業者です。
章亦春(GitHub ID: agentzh)は中国江蘇省生まれで、現在は米国ベイエリアに在住しております。彼は中国における初期のオープンソース技術と文化の提唱者およびリーダーの一人であり、Cloudflare、Yahoo!、Alibaba など、国際的に有名なハイテク企業に勤務した経験があります。「エッジコンピューティング」、「動的トレーシング」、「機械プログラミング」 の先駆者であり、22 年以上のプログラミング経験と 16 年以上のオープンソース経験を持っております。世界中で 4000 万以上のドメイン名を持つユーザーを抱えるオープンソースプロジェクトのリーダーとして、彼は OpenResty® オープンソースプロジェクトをベースに、米国シリコンバレーの中心部にハイテク企業 OpenResty Inc. を設立いたしました。同社の主力製品である OpenResty XRay動的トレーシング技術を利用した非侵襲的な障害分析および排除ツール)と OpenResty XRay(マイクロサービスおよび分散トラフィックに最適化された多機能
翻訳
英語版の原文と日本語訳版(本文)をご用意しております。読者の皆様による他の言語への翻訳版も歓迎いたします。全文翻訳で省略がなければ、採用を検討させていただきます。心より感謝申し上げます!