我的 IIS7 网络服务器每秒收到数百个请求,并且在已知时间,stackoverflow 导致 IIS7 回收应用程序池。如何查看哪个请求包含 stackoverflow,以及理想情况下当 IIS 决定终止应用程序池时该请求中的堆栈跟踪是什么?
答案1
您怎么知道这是堆栈溢出?无论报告什么,似乎都是在报告进程崩溃了。
为下一次做好准备 - 针对该进程运行 DebugDiag 1.2 或崩溃模式调试器,并设置在崩溃时进行内存转储。
简而言之:
- 计算出当前实例的应用程序池的 PID(您可能希望关闭回收,以便它不会不断变化;或者使用 DebugDiag,它可以跨 PID 定位应用程序池)
- ADPLUS / PROCDUMP -P PID -CRASH(或使用该应用程序池的崩溃规则运行 DebugDiag)
- 获取转储文件,并将其输入到 DebugDiag
- 查找特别长的线程堆栈