2017-11-28 2 views
1

スレッドを漏らしているASP.NET Core 2アプリがあります。スレッドが決して死ぬことはないのですか?AspNetCoreアプリは本番環境でスレッドを漏らしています - どのようにデバッグするのですか?

プロダクションで10分間アプリを実行すると、IISは502.3 Bad Gatewayエラーを吐き出します。私はプロセスエクスプローラをアップロードし、APP->プロパティ - >スレッドを見て、私は常に増加するスレッド数を参照してください。

enter image description here

ほぼすべてのスレッドは、次のネイティブスタックトレースで立ち往生しています

  1. ntoskrnl.exeの!KeWaitForMutexObject + 0x8d6
  2. ntoskrnl.exeの!KeDelayExecutionThread + 0x9a9
  3. ntoskrnl.exeの!KeWaitForMutexObject + 0x1cf
  4. NTOSKRNL.EXE!_misaligned_access + 0x80d
  5. ntoskrnl.exeの!SeAccessCheck + 0x280
  6. ntoskrnl.exeの!KeDelayExecutionThread + 0xb49
  7. ntoskrnl.exeの!KeWaitForMutexObject + 0x1cf
  8. ntoskrnl.exeの!KeWaitForMultipleObjects + 0x2ce
  9. NTOSKRNL.EXE!ObWaitForMultipleObjects + 0x29c
  10. ntoskrnl.exeの!ObWaitForMultipleObjects + 0x713
  11. ntoskrnl.exeの!KeSaveStateForHibernate + 0x2a33
  12. ntdll.dllの!ZwWaitForMultipleObjects +は0xa
  13. KERNELBASE.dll!GetProcessHeap + 0x62 coreclr.dll + 0x4d9c8
  14. coreclr.dll + 0x4db61 coreclr.dll!MetaDataGetDispenser + 0x55008
  15. System.Private.CoreLib.dll + 0x58834c

これらのネイティブのスタックトレースは、私のWebアプリケーション以外にスレッドが漏れていることを教えてくれません。 Process Explorerでは、.NET Frameworkアプリケーション全体の.NETスタックトレースを表示できますが、.NETコアアプリケーションの.NETスタックトレースは表示されません。

このような問題をデバッグするにはどうすればよいですか?

私のローカル開発環境でこれを再現することはできません。これは、トラフィックが多い、または本番サーバー環境に関連しているようです。私のアプリで

  • 有効標準出力ログを:

    物事私がこれまで試した故障についての手がかりはありません。

  • AppDomain.UnhandledExceptionハンドラを追加し、stdoutに書き込みました。手がかりはありません。
  • Windowsイベントログを参照してください。手がかりはありません。

答えて

0

私のサーバー上で、私の開発ボックスから不健全な状態でアプリに接続することができました。

Visual Studioでこのアプリケーションに接続すると、スレッドを一時停止して検査することができました。私は彼らがデータベースリソースを待っているのを見る。それは別の質問を開きますが、この特定のStackOverflow質問については話題にはなりません。

解決済みとマークします。レッスンここでは、リモートデバッガー+ Visual Studioスレッドウィンドウを使用して、スレッドリークの問題を明らかにすることができます。

関連する問題