出现原因 Service Unavailable的出现一般是资源不足,如IIS、CPU或内存等,极少数情况下会因asp.net程序错误导致出现。
我们的所有虚拟主机均不限制IIS和CPU,因[1]此可以排除IIS和CPU。
我司所有服务器操作系统均为windows2003,有个很关键的东西就是“应用程序池”
一般情帆芹况下为多个站共用一个程序池,这个程序池可以简单理解为资源库,即这些站点共用这块资源;内存限制为500M物理内存(服务器为8G内存)。
如果这个资源被其中一个站用完,则程序池就会停止,所有使用这个程序池的站就会出现“Service Unavailable”的提示,直到该程序池被重新启动。
大多数情况晌轿仿下,500M内存完全足够使用;如果出现垃圾程序或遇到攻击,则可能出现CPU急速上升或内存大量使用,这是大部分“Service Unavailable”出现的原因。从目前我们监测的情况看,大部分是CPU占用在90%-100%之间出现的。
解决方案:
要解决此问题,按照下列步骤操作:
1、验证是否已为虚拟服务器配置了应用程序池。默认的应用程序池是 MSSharePointPortalAppPool。
请按照下列步骤来确定虚拟服务器正在使用的应用程序池。
a). 单击“开始”,指向“管理工具”,然后单击“Internet 信息服务 (IIS) 管理器”。
b). 展开“ServerName”,展开“Web 站点”,右键单击虚拟服务器,然后单击“属性”。
c). 单击“主目录”选项卡。 为虚拟服务器配置的应用程序池列在“应用程序池”框中。
d). 单击“确定”。
2、验证应用程序池帐户使用的密码是否正确。IIS 不会自动轮询 Active Directory 目录服务中的密码更改。如果宴纤应用程序池帐户是一个域帐户,其密码已过期,则在为此帐户重新指定一个新密码后,您可能会收到本文“症状”部分所描述的错误信息。
3、 验证应用程序池帐户是服务器上的 IIS_WPG 组和 STS_WPG 组的成员。
4.、重新启动 IIS 以回收应用程序池。