最近,我们在ASP.NET应用程序中遇到了一些奇怪的间歇性问题。这些问题包括:
奇怪的是,这些问题大约每30个小时发生一次。 “很奇怪,”我们以为......
嗯,我相信你们当中有些人在想,“对我而言,听起来像是一个App Pool Recycle Property。”你是对的。我们的应用程序池设置为默认值1740分钟才会自动回收,导致我们失去状态,静态等。
所以我的观点是,IIS,ASP.NET中有一些东西可以导致间歇性的挂起。您遇到过哪些事情?
首先,
修改web.config文件可能导致应用程序重新启动,这将导致所有会话结束(当您使用InProc模式时)。
非常感谢,
答案 0 :(得分:2)
您可能还想考虑由于与框架相关的未处理异常,asp.net运行的w3wp.exe进程可能崩溃的可能性。如果这是问题的一部分,您将在罪魁祸首服务器上的系统和应用程序事件日志中找到专门指示w3wp.exe处理被暂停的条目。问题是它不会告诉你原因。它只记录导致它停止运作的东西。
要缓解这些症状,可以先将InProc更改为状态服务器(本地服务器或sql),然后将会话与w3wp.exe进程分离。如果此进程崩溃,会话将不再丢失,但它将在第一次机会时恢复到内存。您还可以更改应用程序池中的设置以便以不同的速率进行回收。如果w3wp.exe崩溃,您可能需要更快速地回收,并可能删除“启用失败保护”。
所有这些只是掩盖了问题。为了隔离这种性质的问题,您需要安装并运行IIS Debug Diagnostic Tool。它的崩溃/挂起报告非常有用,对于发现Asp.Net和IIS之间阴暗空间中出现的问题绝对至关重要。
答案 1 :(得分:0)
只是对于会话故障排除,这个应该足够...... http://aspalliance.com/1182
另一方面,由于许多其他原因,可能会发生挂起。解决此类问题的最佳方法是使用windbg或Debug Diagnostics之类的任何工具在问题发生时创建转储并创建内存转储。稍后可以分析这些内存转储的问题。http://blogs.msdn.com/tess有很多关于调试各种场景的帖子。