IIS7:错误应用程序w3wp.exe,这些崩溃的根本原因是什么?

yor*_*ser 6 iis iis-7 application-pool w3wp

我们的网站是在.NET中,但也有一些旧的ASP和32位库.它已经工作了一段时间(2年).但是在过去的一个月里,我们在IIS7服务器上看到了以下错误,我们无法追踪并修复:

"错误应用程序w3wp.exe,版本7.0.6001.18000,时间戳0x47919413,错误模块kernel32.dll,版本6.0.6001.18215,时间戳0x4995344f,异常代码0xe053534f,错误偏移0x0002f328,进程ID 0x%9,应用程序启动时间0x% 10."

我们能够重现错误:

  • 我们的一个.ASPX页面开始加载,执行代码和查询(我们在整个页面都有response.flush()来跟踪代码中断的位置),然后它突然停止,我们在IIS中得到上述错误.

  • 页面停止加载,没有response.flush(),它没有重定向到我们的error.aspx页面(在web.config中配置)

  • 错误不会一直发生.有时,它连续发生3次,然后它正常工作15分钟不间断,并正确重定向到error.aspx.

  • 我们得到的错误是经典的:"BOF或EOF都是True,或者当前记录已被删除."

  • 当错误发生时,从任何浏览器的页面挂起和其他所有会议在同一台计算机上都挂着网页以及(顺便说一句,我们只允许1个工作进程,同时我们正在测试).从其他计算机,该网站加载正常.

  • 我可以回收应用程序池,杀死w3wp.exe,重启IIS.没什么可做的.再次成功加载页面的唯一方法是重新启动处理会话状态的MS SQL.我不知道这是为什么,但我们猜测,在用户会话Cookie的浏览器指向它没有正确结束(由于上述崩溃)和IIS正在等待它终止处理更多的代码(线程? ).如果有人能够更好地解释这一点,那将非常有帮助.是否有超时我们可以设置为"终止"线程?它是否与MS SQL相关?

我还查看了私有和虚拟内存的用法,因为我认为我们的代码不是最有效的,我确信我们有剩余的内存泄漏.但是,即使私有和虚拟内存都很低(每个100MB以下),我也看到了页面崩溃.

我已经使用调试诊断和WinDbg,从而使在此间表示:http://blogs.msdn.com/b/tess/archive/2009/03/20/debugging-a-net-crash-with-rules-in-debug-diag .aspx,但我们无法使windbg工作,这是我们目前正在尝试做的事情.

如果有人可以帮助我们或指出我们朝着正确的方向发展,那真的很棒,谢谢.

Mik*_*las 0

完全有可能您的某处引用/链接的程序集之一在磁盘上随机损坏(可能会发生)。您能否尝试在一台具有相同统计数据、全新安装了您正在使用的最新 xyz 驱动程序的新的、干净的机器上复制该问题?

我解决了一个神秘的问题,我花了几个月的时间才用这种方法隔离出来。看起来很干净,具有相同规格和必备驱动程序的新机器可以正常工作 - 只有一些具有相同规格的旧机器始终出现故障。我最终卸载了所有内容(IIS、ASP.NET、.NET、数据库和客户端)并从头开始。当我隔离时,最终原因是旧机器上的数据库客户端驱动程序已损坏(所有旧机器都是彼此的克隆,所以我假设它们是在损坏发生后克隆的),并且它似乎弄乱了.NET 内存空间,即使我没有直接调用它。我什至还没有用这个答案回复我的“帮助我调试这个怪物”帖子,因为我怀疑它会对任何人有帮助。