スレッドを漏らしているASP.NET Core 2アプリがあります。スレッドが決して死ぬことはないのですか?AspNetCoreアプリは本番環境でスレッドを漏らしています - どのようにデバッグするのですか?
プロダクションで10分間アプリを実行すると、IISは502.3 Bad Gatewayエラーを吐き出します。私はプロセスエクスプローラをアップロードし、APP->プロパティ - >スレッドを見て、私は常に増加するスレッド数を参照してください。
:ほぼすべてのスレッドは、次のネイティブスタックトレースで立ち往生しています
- ntoskrnl.exeの!KeWaitForMutexObject + 0x8d6
- ntoskrnl.exeの!KeDelayExecutionThread + 0x9a9
- ntoskrnl.exeの!KeWaitForMutexObject + 0x1cf
- NTOSKRNL.EXE!_misaligned_access + 0x80d
- ntoskrnl.exeの!SeAccessCheck + 0x280
- ntoskrnl.exeの!KeDelayExecutionThread + 0xb49
- ntoskrnl.exeの!KeWaitForMutexObject + 0x1cf
- ntoskrnl.exeの!KeWaitForMultipleObjects + 0x2ce
- NTOSKRNL.EXE!ObWaitForMultipleObjects + 0x29c
- ntoskrnl.exeの!ObWaitForMultipleObjects + 0x713
- ntoskrnl.exeの!KeSaveStateForHibernate + 0x2a33
- ntdll.dllの!ZwWaitForMultipleObjects +は0xa
- KERNELBASE.dll!GetProcessHeap + 0x62 coreclr.dll + 0x4d9c8
- coreclr.dll + 0x4db61 coreclr.dll!MetaDataGetDispenser + 0x55008
- System.Private.CoreLib.dll + 0x58834c
これらのネイティブのスタックトレースは、私のWebアプリケーション以外にスレッドが漏れていることを教えてくれません。 Process Explorerでは、.NET Frameworkアプリケーション全体の.NETスタックトレースを表示できますが、.NETコアアプリケーションの.NETスタックトレースは表示されません。
このような問題をデバッグするにはどうすればよいですか?
私のローカル開発環境でこれを再現することはできません。これは、トラフィックが多い、または本番サーバー環境に関連しているようです。私のアプリで
- 有効標準出力ログを:
物事私がこれまで試した故障についての手がかりはありません。
- AppDomain.UnhandledExceptionハンドラを追加し、stdoutに書き込みました。手がかりはありません。
- Windowsイベントログを参照してください。手がかりはありません。