我们有一些安装在Windows Server 2008 R2和IIS 7上的网站,它们偶尔会挂起单元,它们各自的应用程序池将被回收。
我的意思是浏览器会尝试检索网站,并尝试加载它很长一段时间,有时5-10分钟后,它将开始显示网页,有时甚至在此之后什么也没有显示,浏览器仍然不会尝试加载网页。
目前的解决方法是login到服务器,打开IIS 7控制台,并回收到工作进程的网站连接到。
是什么原因造成的?我们如何永久解决这个问题?
你有没有检查过你的IIS日志吗? 这可能是第一个开始的地方。
这可能是由于您的应用程序池停止或由于错误太多而挣扎造成的。 如果转到应用程序池的高级设置,则会出现Rapid-Fail保护部分。
您可以增加故障间隔以及最大故障(在该间隔内允许的故障数量),但这并不能真正解决您的问题,但可能会阻止故障发生的频率。
在回收部分下,您还可以强制应用程序池按指定的时间间隔自动回收,但这可能会导致某些会话数据丢失,并为最终用户重置某些内容。 这也只能帮助阻止问题的发生,而不能解决问题的根本问题。
最好的办法是找出为什么停止。 如果这是一个asp.net应用程序,您可以运行一个像elmah这样的工具来logging您的应用程序中发生的所有exception,并着手解决这些问题。
你有没有在“挂起”过程中检查CPU的使用情况? 应用程序代码中的无限循环将导致这种行为。 除非存在I / O,locking或睡眠循环,否则您将能够从CPU使用情况中看到它,因为每个无限循环您将获得一个完整核心的CPU使用量。