工作进程达到了允许的处理时间

5 iis-6 worker-process application-pool

我们大约每月一次遇到此问题.很难确定原因,所以任何帮助将不胜感激.这会导致应用程序池停止并使网站关闭.我们已经浏览了所有日志文件并且没有任何结论.我们在IIS 6上使用2.0.3版本.

not*_*ary 12

我注意到IIS在29小时的回收计划中默认使用Web应用程序,这可能很麻烦,因为它可能会在用户不期望的情况下进行回收.

例如:网络应用程序从上午12点开始,这意味着第二天它将在凌晨5点,第二天上午10点,第二天下午3点等处进行回收,等等(这是假设有足够的请求活动阻止您的应用程序保留它活着所以它不会因为不活动而关闭)

如果您的Web应用程序严重依赖于内存中的会话状态,则这尤其糟糕,因为回收会终止会话并可能强制用户重新进行身份验证并丢失任何未保存的工作.(如果您没有将应用程序设计为与回收无缝协作)

检查回收计划并确保它在您期望的时间回收.有关屏幕截图,请参阅此页面:http://remy.supertext.ch/2010/08/iis7-worker-process-reached-its-allowed-processing-time-limit/

不确定无限循环建议......听起来你只需要解决回收配置问题.

  • 让我们暂时忘记Session,关注手头的问题,即应用程序以不正常的时间间隔停止.许多不熟悉IIS的用户忘记更改默认的回收间隔.消息"工作进程达到其允许的处理时间"是ASP.NET在计划的回收点停止时报告的错误.因此,修复您的回收,将其设置为可预测的,然后从那里开始.为了解决app停止的原因,ScottGu的这个解决方案对我非常有帮助:http://weblogs.asp.net/scottgu/archive/2005/12/14/433194.aspx (6认同)
  • 关于Session的好点.请注意,在我的原始答案中,我写道"如果您的应用程序严重依赖于内存中的会话状态",但感谢您添加有关该讨论的讨论.但问题是关于应用程序停止,而不是会话. (2认同)

Cly*_*yde 3

这可能表明您的应用程序代码中存在无限循环。

基本上,每次请求进入 Web 服务器时,IIS 都会将该请求交给工作进程。您可以在 IIS 中配置这些工作线程的数量以及超时值。超时是为了让事情继续进行,以防应用程序代码挂起——它被杀死,以便线程可以返回池中以继续为新请求提供服务。

因此,请检查您的代码是否存在可能的无限循环。或者,它可能是一个运行时间极长的数据库查询,最终可能完成但超出了超时值。也许您的 Web 应用程序为最终用户提供了进行过于广泛的查询的机会,从而返回过多的数据或需要过多的数据库处理时间。

当然,很难给出一个具体的原因,但请尝试沿着这些思路思考。