近日某客户的网站经常出现Service Unavailable(服务不可用),查询相关资料发现网站出现Service Unavailable主要是以下几个方面原因:
一、 如果出现“Service Unavailable”的提示,刷新几下又可以访问。
出现这种情况是由于您的网站超过了iis限制造成的。由于2003的操作系统在提示IIS过多时并非像2000系统提示“链接人数过多”,而是提示"Service Unavailable",出现这种情况是由于网站超过了系统资源限制造成的,主要是程序占用资源太多。
一些死循环程序,或者不优化的程序都会占用太多的系统资源,而系统资源明显是有限的。不过WINDOWS2003的操作系统,各网站之间是以独立进程运行的,不会相互影响。
如果一个网站的程序占资源太多或者发生太多的错误,系统日志就会提示:“应用程序池 'xxx' 被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误, 或者提示:应用程序池 'xxx' 超过了其作业限制设置。这时,访问这个网站就会提示:Service Unavailable。一般系统会在30秒左右恢复正常,多刷新几次就能正常访问了。
另外,如果你的网站当前访问人数过多,超过了系统的iis连接数限制,也会出现Service Unavailable的提示(win2k主机下出现连接过多就会提示:连接过多,请稍后再试;而win2003的主机刚直接提示:Service Unavailable)
二、没有限制IIS连接,还是遭遇Service Unavailable。
多见于使用ACCESS数据库的网站。一般使用windows 2003 IIS 6的用户可能这个问题一直正常的系统,突然有一个网站打不开了,提示: Service Unavailable 但这个网站并没有限制IIS连接数。然后马上影响到了别的网站,不到一会,其他的网站也全变成了 Service Unavailable 。这是什么原因呢?
我们分析后可以知道,还是MS的老问题。ACCESS引擎当了。用服务器医生的文件医生修复,查看修复结果时会发现一些文件引起ACCESS引擎“灾难性故障”及“未将对象引用设置到对象的实例”的错误。 通过文件医生修复后,系统才会恢复正常。
三、浏览一个 Windows SharePoint Services Web 站点时,提示:Service Unavailable
Microsoft Internet 信息服务 (IIS) 6.0 中没有正确地配置用于虚拟服务器的应用程序池,就可能会发生此问题。
要解决此问题,按照下列步骤操作:
1、验证是否已为虚拟服务器配置了应用程序池。默认的应用程序池是 MSSharePointPortalAppPool。
请按照下列步骤来确定虚拟服务器正在使用的应用程序池。
a. 单击“开始”,指向“管理工具”,然后单击“Internet 信息服务 (IIS) 管理器”。
b. 展开“ServerName”,展开“Web 站点”,右键单击虚拟服务器,然后单击“属性”。
c. 单击“主目录”选项卡。 为虚拟服务器配置的应用程序池列在“应用程序池”框中。
d. 单击“确定”。
2、验证应用程序池帐户使用的密码是否正确。IIS 不会自动轮询 Active Directory 目录服务中的密码更改。如果应用程序池帐户是一个域帐户,其密码已过期,则在为此帐户重新指定一个新密码后,您可能会收到本文“症状”部分所描述的错误信息。
3、验证应用程序池帐户是服务器上的 IIS_WPG 组和 STS_WPG 组的成员。
4、重新启动 IIS 以回收应用程序池
注:IIS是指您的网站同时打开窗口或链接的个数,打开一个窗口即占用一个IIS。
看了上面的文档,下面总结一下出现网站出现Service Unavailable的原因解决办法
1、网站程序本身bug(例如死循环);
解决办法:修改程序,检查程序错误,可以把程序放到本地应用起来,检查CPU 内存耗用情况。
2、设置不当(比如开启某些不必要,但是又耗资源的功能);
解决办法:尽量不要开启那些不必要的功能,不仅保证网站足够快,也保证服务器稳定。
3、做某些特殊操作(比如生成网页的操作);
解决办法:特殊操作尽量避开高峰期,以及在本地操作。
4、还有网站IIS或者其他服务重起(只是一瞬间)、超出资源限制、iis在线人数超过限制(普及型200m的服务器20个并发,标准1g型100个并发)、超过cup的限制(生成html等)等原因引起的。
解决办法:如果经常出现类似的错误,请及时优化网站程序,或者升级你的虚拟主机至更高的款型,以获得更多的系统资源。
如有其它解决方法请发贴补充。