4

申し訳ありませんが、私の本当の質問を表現する良い方法を見つけることができませんでした。

トラフィックの多いASP.NETサイトを64ビットマシンで実行しています。ただし、アプリの一部のレガシーコンポーネントが原因で、IISを32ビットモードで実行しています。この特定のWebアプリを、Webガーデンオプションがオンになっているアプリケーションプール内で実行しています(8コアマシン内で6つのプロセスを実行しています)。

週に1〜2回、プロセスの1つが100%のCPU使用率に急上昇し、サイトの速度が大幅に低下するため、私の計画では、それが発生するまで待機し、問題のあるプロセスをメモリダンプしてから、WinDbgを調べてコードがどこでホイールを回転させているかを確認するためにスパイクしているスレッド。

以前にWinDbgを使用してデバッグし、サイトでデッドロックを引き起こしている原因を突き止めましたが、それは数か月前のことであり、どのように機能させたか思い出せません。(補足として、これはあなたが行うすべてを文書化するためのレッスンです。)

DLLバージョンの問題を防ぐために、サイトを実行しているWindows2003サーバーでWinDbgを実行しています。これまでの手順は次のとおりです。エラーメッセージが表示されるのはどこが間違っているのか教えてください。

  1. 最初に、UserDumpを使用して、次のコマンドを使用してスパイクプロセスをメモリダンプします。ここで、3389はプロセスのIDです。

    userdump -k 3389

  2. ダンプをWinDbgのx86エディションにロードします。

  3. 64ビットマシンで32ビットを実行しているので、最初にメモリダンプをロードしてから、次のようにします。

    .load wow64exts

    .effmach x86

  4. シンボルパスに、アプリのPDBファイルを含むディレクトリが含まれていることを確認します。

    .sympath+ c:\inetpub\myapp\bin

  5. `.load SOS'だけを実行すると、「システムは指定されたファイルを見つけることができません」というエラーで失敗するので、次の完全修飾ルートを実行します。これは機能します。

    .load c:\windows\microsoft.net\framework\v2.0.50727\sos

ここから、私は迷子になります。のようなSOSコマンドのいずれかを試してみると、次の!threadsエラーが発生します。

Failed to load data access DLL, 0x80004005

そのエラーには、確認する必要のある項目の番号付きリストも付随しています。最新バージョンのデバッガーを実行していることを確認しました。mscordacwks.dllは実際にはmscorwks.dllファイルと同じディレクトリにあり、ダンプファイルと同じアーキテクチャでデバッグしています。

魔法の" .cordll -ve -u -l"コマンドも実行しましたが、それでも何も解決しません。CLR DLL status: No load attemptsそれを実行すると、いつも「」で迎えられます。次に、「.reload」を試してみます。これにより、「」のような警告がいくつか表示されますWARNING: wldap32 overlaps dnsapi。「」のようなことを言ってくれたらいいのにCLRDLL: Loaded DLL C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscordacwks.dllと思います。しかし、そうではありません。

4

5 に答える 5

3

sos コマンドを実行する前に !sw を実行してみてください。このブログ投稿を参照してください。

于 2008-10-07T14:45:08.960 に答える
2
于 2008-10-07T14:41:29.153 に答える
2

私の経験では、アプリ プールの急増は、それがリサイクルされていることが原因である可能性があります。IIS クラッシュ/ハング エージェントと IIS ダンプを試しましたか?

http://www.microsoft.com/downloads/details.aspx?FamilyID=01c4f89d-cc68-42ba-98d2-0c580437efcf&DisplayLang=en

また、ダンプファイル アナライザーも含まれており、メモリ リークについて通知し、修正が必要なコード領域を提案します (該当する MSKB 記事へのリンクを完備しています!)。

于 2008-10-07T15:18:20.047 に答える
1

同様の問題に対処する必要がありました。私の場合、WinDbg が正しいバージョンの mscorwks.dll を見つけられなかったことが判明しました。フレームワークのバージョンに加えて、同じフレームワークのバージョン間で異なる可能性がある DLL のリビジョンもあります。

理論的には、Microsoft シンボル サーバーは必要な DLL を提供できるはずですが、私の場合はそうではありませんでした。それを解決するために、!sym noisyシンボルの読み込みに関する追加情報を取得していました。を実行すると!dumpstack、次のエラー メッセージが表示されました。

SYMSRV: http://msdl.microsoft.com/download/symbols/mscorwks.dll/492B82C1590000/mscorwks.dll not found

これを修正するために、ローカル シンボル キャッシュに適切なフォルダーを作成し、ダンプの取得元のコンピューターから mscorwks.dll をコピーしました。の後.reload、WinDbg は必要な DLL をローカル シンボル キャッシュで見つけ、問題なく続行しました。

または、で使用されている mscorwks の正確なバージョンを見つけることができますlm v m mscorwksその後、このリストから必要なバージョンを含む更新を見つけることができます。特定の更新プログラムから必要な DLL を適切な場所に抽出する必要があります。

于 2009-08-05T23:01:56.810 に答える
1

おい-これが役立つかどうかはわかりませんが、これを試してみてください。

  1. c:\windows\microsoft.net\framework\v2.0.50727\sos.dll を、windbg がインストールされているディレクトリと同じディレクトリにコピーします (例: c:\program files\Debugging Tools for Windows\ )。なんで?sosファイルを簡単にロードできるようにする
  2. 実行windbg
  3. メモリ ダンプ ファイルを読み込みます。私にとっては、ctrl-D または File -> open crash dump を使用します
  4. .load sos <-- load コマンドの前にフルストップを書き留めます
  5. .symfix c:\temp\debug_symbols
  6. .reload

わかりました..コマンドラインに注意してください。これは、ダンプがあった現在のスレッドを教えてくれます。これは、CPU が高いシナリオでは役に立たない可能性があります..任意のスレッドにいる可能性があるためです。

ここから、実行中のスレッドを見て、最もビジーなスレッドをチェックします

8 !threadpool <-- これは、CPU 使用率を確認して、私たちががらくた (ビジー) 状態にあるかどうかを確認できるようにするためです... たとえば、100% CPU かどうか。

9 !runaway <-- 最も長く続いているスレッドをリストします...

0:027 !runaway
User Mode Time
Thread       Time
18:704       0 days 0:00:17.843   <-- Thread #18
19:9f4       0 days 0:00:13.328   <-- Thread #19
16:1948      0 days 0:00:10.718
26:a7c       0 days 0:00:01.375
24:114       0 days 0:00:01.093
27:d54       0 days 0:00:00.390
28:1b70      0 days 0:00:00.328
0:b7c       0 days 0:00:00.171
25:3f8       0 days 0:00:00.000
23:1968      0 days 0:00:00.000

スレッド 18 と 19 はしばらくぶらぶらしていました.. うーん.. それらはループに陥っていますか?

  1. ~18s <-- スレッド 18 に移動します。
  2. !clrstack <-- clr コール スタック .. Windows でのデバッグに似ています。

..そしてここから、アドレス参照などを与えることで、オブジェクトやものをダンプできます。

!help をチェックして、試して使用するいくつかのコマンドをリストします.. !help.sos も機能すると思いますか?

HTH .. それでも行き詰まる場合は、何が機能し、何が機能しなかったかを尋ねてください。

于 2008-10-30T12:52:32.540 に答える