2009-11-05 13 views
5

presentation Dan Farino(チーフシステムアーキテクト)MySpace.comで、Webベースのスタックダンプツールを紹介しています。これは、特定のプロセスで実行されているすべてのスレッドをカタログしています)など、Mdbgを使用したASP.NET用のWebベースのスタックダンプツール?

を実行して彼らの技術はまた、highscalability.comに要約される:

  • PerfCollector
    集中型 パフォーマンスデータの収集 UDP経由。 Windowsより信頼性が高く、 は任意のクライアントに接続し、 の統計情報を参照できます。
  • Webベースのスタックダンプツール。
    問題のサーバ を右クリックし、。 管理スレッドのスタックダンプを取得できます。システムにRDC を登録してデバッガを接続し、 1/2後で答えを得るために使用しました。遅く、 はスケーラブルで、面倒です。 スタックダンプだけでなく、スレッドが何をしているかについて多くのコンテキストを提供します。 は、 データベースで90個のスレッドがブロックされているため、データベースが停止している可能性があるため、トラブルシューティングが容易です。
  • Webベースヒープダンプツール。
    ダンプすべて メモリ割り当て。非常に有用な の開発者。手で することで時間を節約できます。 •プロファイラ。 の要求を最初から最後まで追跡し、 レポートを生成します。 URL、方法、ステータス、 を参照してください。 は、遅いリクエストを識別するのに役立ちます。 ロックの競合を見て、 例外がスローされている、何かが面白いかもしれない です。非常に軽い 体重。 のすべてのVIP(100台のサーバーのグループ)の1つのボックスで稼働しています( )。サンプル1スレッドは10秒ごとに 秒です。常に の背景でトレースしています。

質問:ASP.NET用のWebベースのスタックダンプツールを構築するにはどのツールが必要ですか?便宜上、対象のAppDomainでホストされている* .aspxが、そのプロセス内のすべての管理対象コールスタックを出力できると仮定します。

Mdbg(CLR 2 SDKで出荷を開始し、C#/ ILで完全に記述されたマネージコード用デバッガ)と一般的にCで見つかったmdbgcoreアセンブリの使用カバーいくつかの記事があります:\プログラムファイルは、 \のMicrosoft Visual Studioの8 \ SDKの\ v2.0の\ビン:

ソリューションは、このアセンブリを参照するだけで、目的の出力が得られますか?「管理されたすべてのコールスタックをリストする」操作は、実稼動トラフィックを処理している実行中のプロセスにどのような影響がありますか?

答えて

3

私は.NETのプロファイリングAPIが使えると信じています。

Google CodeのSlimTuneプロジェクトを見て、ソースがあり、どのように適応し、改善するかを確認できるライブサンプルをAsp.NETのシナリオで利用できます。ネットのプロファイリングAPIでよろしく マッシモ

2

は、サーバーを停止する必要があり、それは多くのCPUを取る(それはあなたのすべてと呼ばれる方法を完全に制御できます)。

私はMDbgでこれを行うのが最も軽い解決策だと思って、StackDumpと呼ばれる非常に小さく便利な小さなアプリケーションをまとめました: 1)デバッガはアプリケーションを停止し、そのプロセスで実行されているすべてのCLRスタック 2)アプリケーションが再開されます。 この操作はすばやく実行され、稼働中の本番サーバー上で実行されることができます(多分)。

これを管理するのは、わずか80行の.Netコードです。 Codeplexにsource codeを公開しました。

関連する問題