W3wp.exe CPU 利用率 100 %的故障排除过程 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />311接到下属的报障,说XX项目的接口服务器CPU得用率一直为100%。他们检查服务器系统安全与网络情况都正常。只是接口服务器上的w3wp.exe占用CPU利用率99%,一直不下来。于是我叫他先重启一下IIS服务看看,我随后就远程上去看看。我同事告诉我,重启IIS服务后故障仍然存在。此时我已经远程连接到该接口服务器上。以下就便是我结合其它同事进行故障排除的过程。

 

第一步:在任务管理器中进程中查看占用CPU最高进程,是三个w3wp.exe进程,这说明有三个IIS的应用程序池在运行。

 

第二步:应用程序池的检查
打开internet信息服务(IIS)管理器,检查正在运行的网站及网站所使用程序池。我发现有两个正在运行的网站以及他们主站所对应的程序池。如果按常理:一个网站对应一个应用程序池,那么就有一个应用程序池进程可能是病毒。而在应用程序池中有四个应用程序池是处于运行状态的。于是我先尝试禁用两个非主页对应应用程序,禁用后CPU利用率先下降一点后马上又恢复到99%,这说明主要原因不是来自这两个应用程序池,同时也说明这个两应用程序池是业务运行需要使用的应用程序池。于是我马上启动这两个应用程序池。

 

第三步:站点检查
上面检查说明问题不在应用程序池上,就应该出在站点上。于是我一一禁用主站点,发现禁用其中一个主站点时,那3CPU利用最高的w3wp.exe进程的CPU利用率迅速下降为0%。这说明CPU利用率的主要来源于其中一个站点。为了搞清楚到底是该网站的那些访问造成CPU利用系统100%的,我开了5秒钟的IIS访问日志。打开IIS访问日志存在的目录,发现5秒钟的访问日志就有30M,这说明IIS访问量很大。打开IIS访问日志后发现95%的访问日志是不同IP对接口服务器的同一个页面的访问,而访问的该页面为客户下载时需要访问的正常页面。于是我找了几个后台网站开发的同事来研究,他们都没有发现该页面的异常,但大家都同意我的看法:如此大量的访问量是不正常的。于是我便去找后台开发的开发经理,开发经理对IIS日志认真分析后,根据客户端下载的帐号及下载的内部版本号确认为客户端软件开发上BLOG。于是便将客户端软件开发经理找来一起分析这故障,最终找到故障产生的原因:由于昨天开通的客户端升级包更新的下载流量过大影响到其它业务而将客户端升级包下载的所用的升级服务器IIS停用了。而已经从接口服务器下载到升级插件的和升级包还没有下载完的客户端每5秒向接口服务器来查询一次新的可以使用的升级包下载服务器的地址。问题的产生根源找到了,解决方法就是在接口服务器中临时添加多台其它省的升级服务器来分担该省的升级包下载业务。

 

从该排除的过程,我们得到以下几个启示:
1.       W3wp.exe占用CPU利用率高的排障过程。
2.       平时对工作一些细节上的留意。(只有后台的开发经理看内部版本号确认为客户端升级的问题)
3.       对于一个好的产品,也常常需要考虑到非常规操作对业务带来的影响。该故障产生就是来源于对升级过程的非正常操作,而开发经理按正常流程来开发产品,并将失败后的间隔时间设为5秒造成的。