MySpace.comのチーフ システム アーキテクトである Dan Farino による素晴らしいプレゼンテーションがあり、特定のプロセスで実行されているすべてのスレッド (スレッドの実行内容、実行時間など) をカタログ化する Web ベースのスタック ダンプ ツールを紹介しています。 .)
彼らのテクニックは、 highscalability.comにもまとめられています。
- パフォーマンスコレクター。
UDP によるパフォーマンス データの集中収集。Windows よりも信頼性が高く、あらゆるクライアントが接続して統計情報を表示できます。 - Web ベースのスタック ダンプ ツール。
問題のあるサーバーを右クリックして、.Net 管理スレッドのスタック ダンプを取得できます。以前は、システムに RDC を接続してデバッガーを接続し、1/2 後に回答を得なければなりませんでした。遅く、拡張性がなく、退屈です。単なるスタック ダンプではなく、スレッドが何をしているかについて多くのコンテキストを提供します。データベースで 90 個のスレッドがブロックされていることがわかり、データベースがダウンしている可能性があるため、トラブルシューティングが容易になります。 - Web Base ヒープ ダンプ ツール。
すべてのメモリ割り当てをダンプします。開発者にとって非常に便利です。手作業で何時間も節約できます。• プロファイラー。要求を最初から最後まで追跡し、レポートを生成します。URL、メソッド、ステータスなど、遅いリクエストを特定するのに役立つすべてを確認します。ロックの競合を調べたり、多くの例外がスローされたり、興味深いことは何でも調べます。非常に軽量。本番環境では、VIP (100 サーバーのグループ) ごとに 1 つのボックスで実行されています。10 秒ごとに 1 つのスレッドをサンプリングします。常にバックグラウンドでトレースします。
問題は、ASP.NET 用の Web ベースのスタック ダンプ ツールを構築するには、どのツールが必要かということです。便宜上、ターゲット AppDomain でホストされている *.aspx で、そのプロセスのすべてのマネージ コール スタックを出力できると仮定しましょう。
Mdbg (C#/IL で完全に記述され、CLR 2 SDK で出荷が開始されたマネージ コード用のデバッガー) と、通常は C:\Program Files\Microsoft Visual Studio 8\SDK\ にあるmdbgcoreアセンブリの使用をカバーする投稿がいくつかあります。 v2.0\ビン:
- http://dotnetdebug.net/2005/11/09/exceptiondbg-v01-debug-your-exceptions/
- http://blogs.msdn.com/jmstall/archive/tags/MDbg/default.aspx
- http://blogs.msdn.com/vijaysk/archive/2009/11/04/asp-net-debugger-extension-for-iis-7.aspx
ソリューションは、単にこのアセンブリを参照して、目的の出力を生成しますか? 「管理されているすべての呼び出しスタックを一覧表示する」操作は、運用トラフィックを処理している実行中のプロセスにどのような影響を与えますか?