【发布时间】:2010-10-23 17:49:14
【问题描述】:
我们大约每月遇到一次此问题。很难查明原因,因此我们将不胜感激。这会导致应用程序池停止并关闭站点。我们浏览了所有的日志文件,没有任何结论。我们在 IIS 6 上使用 2.0.3 版本。
【问题讨论】:
标签: iis-6 worker-process application-pool
我们大约每月遇到一次此问题。很难查明原因,因此我们将不胜感激。这会导致应用程序池停止并关闭站点。我们浏览了所有的日志文件,没有任何结论。我们在 IIS 6 上使用 2.0.3 版本。
【问题讨论】:
标签: iis-6 worker-process application-pool
我注意到 IIS 将 Web 应用程序默认设置为 29 小时回收计划,这可能会很麻烦,因为它可能会在您的用户不期望的时候回收。
例如:网络应用程序从上午 12 点开始,这意味着它在第二天早上 5 点回收,第二天早上 10 点,第二天下午 3 点,等等(这是假设有足够的请求活动针对您的应用程序使其保持活动状态,因此它不会因不活动而关闭)
如果您的 Web 应用严重依赖内存中的会话状态,这尤其糟糕,因为回收会终止会话,并可能迫使用户重新进行身份验证并丢失任何未保存的工作。 (如果您没有将应用设计为与回收无缝协作)
检查回收计划并确保在您期望的时间回收。截图见:http://remy.supertext.ch/2010/08/iis7-worker-process-reached-its-allowed-processing-time-limit/
不确定无限循环建议...听起来您只是有一个回收配置问题要解决。
【讨论】:
Session 进行编码,就好像它可以在每个请求中被清除一样。此外,这个问题似乎在谈论应用程序崩溃,这是不同的。
如果您因此遇到了崩溃(听起来像您),那么您可能想要获取一份 Debugging Tools for Windows 的副本并花一些时间阅读 Tess Ferrandez 的博客——她提供了关于执行帖子的很好的建议mortem 崩溃分析,让 WinDbg 变得更加平易近人。
【讨论】:
这可能表明您的应用程序代码中存在无限循环。
基本上,每次请求进入 Web 服务器时,IIS 都会将请求交给工作进程。您可以在 IIS 中配置这些工作人员的数量,以及超时值是多少。超时是为了在应用程序代码挂起的情况下保持运行——它会被终止,以便线程可以返回池中以继续为新请求提供服务。
因此,请查看您的代码以查找可能的无限循环。或者,它可能是一个运行时间极长的数据库查询,它可能最终完成但超过了超时值。也许您的 Web 应用程序为最终用户提供了一个机会来进行过于宽泛的查询,从而返回过多的数据或需要过多的数据库处理时间。
当然,很难给你一个具体的原因,但试着按照这些思路思考。
【讨论】: