スタック トレース APM が完全な Web アプリケーション監視に十分でない理由

平均的なユーザーに素晴らしいウェブアプリケーションを作るものを尋ねると、おそらく「スピード」と言うでしょう。 しかし、スピードは、おそらく要素の広範なランダウンの最も重要な側面です。 アプリケーションの開発やプログラムでのレンダリングなどの要因は、おそらくそのリストの上位にあります。 そして、何が優れたパフォーマンスのアプリケーションを構成していますか? そして、何かがうまくいかないとき、あなたはどのように知っていますか? これらは、トレース監視と合成 Web アプリケーションパフォーマンス監視をスタックして答える質問の一部です。 どちらも長所と短所がありますが、この記事では、優れた Web アプリケーションを決定する最前線にユーザーのエクスペリエンスを確実に配置するための優れたツールを説明します。

 

スタック トレースとは

スタック トレースは、有用な調査用計測器です。 これは、プログラム実行の現在の状態まで呼び出された機能/方法論の山である「コールスタック」を示しています, 未知の特殊なケースがコンパイラによって取り込まれた時点で (またはスタック証跡が物理的に生成された瞬間).

これは、エラーが発生した場所を提供するだけでなく、プログラムがその場所でどのように巻き上げたかについての洞察を与えることができるので、非常に貴重です。 これは、プログラムがクラッシュした時点まで呼び出されたメソッドを提供し、アプリケーションが経験していたメソッド呼び出しのランダウンを与えることを目的としています。 それは何かがそれがどのように判明したかを理解するのを助け、エラーを修正する機会を表示します。 このトレースを行わない場合、これらのアクションは原因不明になり、エラーは通知されなくなります。 その後、サービスは「ブラックボックス」と呼ばれるものになります。

 

例外とは何ですか?

例外は、ランタイム条件がエラーが発生したことを通知するために使用する事です。 よく知られているモデルは 、Null ポインタ例外インデックスアウトオブバウンド例外、 または 算術例外です。 これらのそれぞれは、文字通り想像を絶する何かを達成しようとしたときに発生します (コンピュータによって)。 たとえば、無効な記事を参照しようとすると、NullPointerExceptionがスローされます。

 

例外

 

上の図はスタック トレースを示しています。 私たちは、ランダウンの開始に向けて開始します。で…“, エラーが発生した場所を知ることができます.私たちが発見しようとしているのは、メソッド呼び出しの最初の出会いです。この状況では、犯罪者は”で com.example.myproject.Book.getタイトル(書籍.java:16)。“結果的に開くことができる 予約.java 16 行目を見てください。 これは、スタックをたどるときに起こることの基本的なケースです。

同様に、次のような一連の免除によっても引き起こされます。

 

免除

 

この場合の犯人は、それが「原因: java.lang」で始まるところです。をクリックします。com.example.myproject で.getId(予約.java:22)を予約してください。著者.getBookIds(著者.java:36)

この 1 つについて特徴があるのは、 “によって発生する” 句です。たまに免除は、さまざまな ” ” 地域によって引き起こされる” を持つことになります。場合によっては、バックトラック内の多くのセグメントの 1 つである「基になるドライバー」を検索する必要があります。

 

サードパーティのコードがスタック バックトラックに与える影響

現在のアプリケーションでは、多くの場合、クロスファッションでトリガされる関数呼び出しの層が数多くあります(他の関数を呼び出す関数や場合によってはそれ自体)。 混乱を招く問題を増やすために、呼び出し履歴に追加するプログラミング コードの層が定期的に数多くあります。 ランタイムまたはインポートされたライブラリからのコードは、コール スタックの純度を低下させ、例外を修正する間に、使用を妨げたり、混乱させたりすることが困難になります。 今では、「この出力ブロックはバグを特定するのに役立つ何をするのか」と考えているかもしれません。

 

呼び出し履歴とトレースのヘルプの実行方法

ここまでは、実行ではなくコードの事故について主に説明してきました。 バグが現れた時点で、その外観を含む条件を特定し、それらを再生してバグを再現する必要があります。 また、パフォーマンスの場合、上記の手法を達成するためのアプローチも必要です。 現在のフレームワーク条件をシミュレートし、現在の状況を再考し、必要な変更を加え、結果を分析するために現在のフレームワーク条件のプレビューを再生する必要があります。

実行のチューニングは、最初に最大のボトルネックを軽減するために、検出、見積もり、およびアップグレードから始まります。 パフォーマンスチューニングモジュールのプロデューサーとして、測定、更新、最適化のこの手順を知っている必要があります。 これは、コールスタックがこのプロセスを調べるのに役立つ瞬間です。 収集された情報を得るために、基本的には一般的なプロファイリングを実践として使用します。 プロファイルが発生した時点で、呼び出し履歴の現在の状態を示す場合があります。 情報のスナップショットが作成された時点で、何度も表示されるコードブロックを確認する準備が整いました。 しかし、完全に確かめるためには、これらのシステムフレームワークの測定を行うための手順を理解する必要があります。 しかし、ここには問題があります。 スタック トレースには、独自の制限があります。 最先端のアプリケーションには、多数の計算が必要であり、したがって、多くのコール スタックが必要です。 では、情報の山をフィルタリングして理解するにはどうすればよいでしょうか。

 

スタック トレースの制限事項

たまにはエラーが発生しないことを確認することはできません。 たとえば、プログラムで Web 駆動型アプリケーションを使用している場合、PC が Web アソシエーションを失うことを防ぐ方法はありません (たとえば、クライアントが PC のシステム ネットワークを外れないようにすることはできません)。 今起こることは、システムライブラリが免除で私たちを扱うものです。 完璧な世界では、これはエンジニアが特別なケースを「キャッチ」し、それを管理するポイントです。 これは、ネットワーク関連付けを持つモデルでは、関連付けを復活させるか、クライアントに通知する必要があることを意味します。 エンジニアは、免除を受けている間、彼らが期待していたケースを捕らえたことを覚えておく必要があります。 これは、スタック のトレースの重要な要因であることが判明しました。 それは特定の方法で扱われなければならなかった特別なケースをキャッチしませんが、全く異なる方法で世話をされました。

スタック トレース ツールは、監視アプリケーションの観点からは少しでも確実ではありません。 内容はコンパイルが難しく、理解し、分解するのが難しく、徹底的な間違いを起こしやすい。

 

合成モニタリング

スタック トレース ツールとは異なり、 代理監視 は、アプリケーションに 対してシミュレートされたユーザー交換/トランザクション を作成することによって機能し、平均的なユーザーまたはクライアントがアプリケーションを通過する方法を偽装します。 ファイアウォールの内側、サーバー空間内に適用して、すべてのマシンが適切に実行されていることを保証したり、ファイアウォールの外側に適用して、世界中の観点からアクセス性と実行に関するデータを提供することができます。 これらのサーバーコールとテスト内容は、5分ごとまたは3時間ごとに、事前に定義された周波数で実行することにより、監視「計測器」になります。

この種の監視は、問題を特定し、エンド クライアントに実際に影響を与える前にサイトやアプリケーションを調整する必要があるかどうかを調査できるため、ビジネスにとって基本的な機能です。 この種のチェックは実際の Web トラフィックに依存しないため、Web アプリケーションやページはいつでもどこからでも監視でき、アプリケーションが本番に移行する前に監視エージェントを設定できます。 そのため、多くの開発者は、24時間365日の可視性を提供し、顧客が問題になる前にエラーを修正する組織にレバレッジを提供するため、合成監視に傾いています。

 

合成監視が必要ですか?

この質問に対する最も複雑な回答は、アプリケーションまたはサイトがアクションの準備ができていることを保証するために支援が必要です。 しかし、はるかに技術的なメモでは、この問い合わせに対する真の反応はこれよりもはるかに進んでいます。 品質監視エージェントは、サイトに ping を実行するだけで、サイトが利用可能であることを確認するわけではありません。 品質管理では、エリア名フレームワークの記録、転送速度、データベース、システムの可用性、CPU負荷、ドライブストレージ、イベント、RAM、その他の基本的な要素をチェックします。 稼働時間と反応時間は定量化に重要な要素であることは間違いありませんが、アプリケーションまたはページの信頼性と一貫性は、さらに重要で、測定が重要であり、これらのことをスクリーニングするように設定する必要があります。

また、一流のエクスペリエンスを提供する場合は、ファイアウォール内から API とアプリケーションのアクセシビリティとアップタイムをチェックするだけでは不十分です。 ユーザーは、 さまざまなデバイス、ブラウザ、ネットワークから世界中のどこからでもアプリケーションにアクセスできます。 代理監視を使用すると、サイン イン、アイテムの検索、フォーム/アンケートへの記入、ショッピング カートへの物の追加、サインアウト プロセスなど、これらのビジネス手順やクライアントの交換を模倣し、世界中の様々な場所からそのパフォーマンスを確認できます。 その後、取引所内の地理的な場所とステップ間の実行の詳細を分析し、改善計画を定義し始める。

 

スタック トレースと代理監視: 結論

代理監視では、外部からの予防的アプローチを採用し、クライアントが問題を発見する前に問題を発見します。 適切な手順が使用された場合、代理監視はエンド ユーザーとクライアントの同じ視点を提供できます。 これはスタック トレースの場合には当てはまらない。 それは間違いなく非常に信頼性が高く、有能な分析プロトコルですが、それは前の方法で失敗したイベントのステップを追跡することができます。 これにより、スタック トレースと合成監視が組み合わさって、スタック全体を結び付け、強力なパフォーマンス監視ソリューションを提供できることを、非常に確固たる理解を得ることができます。 30日間無料で完全なドットコムモニタープラットフォームを試してみてください

 

Latest Web Performance Articles​

トップ25サーバー監視ツール

この記事では、Dotcom-Monitorの独自のソリューションから始めて、Webサイトの稼働時間を監視し、ユーザーに最高のエクスペリエンスを提供するのに役立つ上位25のサーバー監視ツールの専門家を紹介します。 サーバー監視が監視戦略の重要な部分である理由について説明します。

トップ20の合成監視ツール

合成モニタリングにより、チームは考えられるあらゆる視点からWebサイトとWebアプリケーションのパフォーマンスを24時間監視および測定し、問題が実際のユーザーに影響を与え始める前にアラートを受信できます。 ここでは、合成監視ツールのトップピックを紹介します。

Start Dotcom-Monitor for free today​

No Credit Card Required