w3wp 挂起 - 可能线程被阻塞?尝试使用 WinDbg 进行调试

w3wp 挂起 - 可能线程被阻塞?尝试使用 WinDbg 进行调试

过去一周,我一直遇到麻烦,我的一个在 IIS 上运行的 Web 应用程序每天至少会随机挂起一次,我必须回收应用程序池才能使其恢复运行。CPU 和内存似乎正常。

当我查看 IIS 管理器中工作进程部分中的活动线程时,我可以看到线程像被卡住一样不断增加,当它挂起时,那里大约有 25 多个线程,当运行正常时,任何时候都有 3-6 个线程。

我猜这可能是由于我的 C# 网络应用程序上的代码更改造成的,但我不知道它在哪里/是什么,据我记得,只做了一些小的更改。

上周我确实很努力地用 WinDbg 和 dotTrace 等多种工具进行诊断,看是否能找到任何明显的问题,但目前我有点力不从心了。

我可以看到有很多线程在连接到我的 NoSql 数据库(RavenDb)时出现超时错误,但是我认为这是转移注意力的手段,是由于线程在 IIS 中被阻塞,因为我可以从另一个 IIS 应用程序连接到同一个数据库,也可以使用数据库管理工具来管理/查询数据库。

我有小型转储和 dotTrace 快照可以玩。

以下是在 WinDbg 上执行“~*e !clrstack”的结果: https://gist.github.com/phinett/7901d82fa526696d3c92

有什么帮助/想法可以帮助我找到罪魁祸首吗?如果需要,我很乐意提供小型转储的访问权限。

谢谢你!

答案1

从 DebugDiag v2 update 1 开始并强制进程转储,然后运行挂起分析可能会更简单、更快捷。

相关内容