教你解决Web服务器CPU占用100%的情况,导致网站打不开,访问不到

对于服务器管理人员来说,经常会碰到Web服务服务器CPU占用100%的情况,导致网站打不开,访问不到,甚至崩溃,搞得你无从下手,以下我就来介绍一下我在日常工作中总结的一些解决办法,主要用来剖析w3wp.exe(IIS)占用cpu100%的一些解决原因,希望对你有所帮助。

资源监视器

w3wp.exe

全名(IIS Appliction Pool Process ),是IIS工具的一部分,是在IIS(因特网信息服务)与应用程序池相关联的一个进程,如果你有多个应用程序池,就会对应多个w3wp.exe进程实例运行。

引起常见的w3wp.exe(IIS)CPU占用100%的常见原因有以下几点:

1、web访问量大,服务器压力大引起的。

这是常见的情况。如果web访问量过大,同时在线的人数特别多,处理的当前请求数过高,就会同时对IIS和服务器在成较大的压力,特别是服务器不断的处理客户端发过来的请求,然后反馈给客户端,这些都需要占用大量的CPU,从而导致服务器CPU100%。

2、动态页面(.aspx)的程序逻辑复杂程度

这种情况在流量较小的网站还不是很严重,出现CPU爆满的情况较小,但是在高并发的网站上面来说,特别是在asp.net的当前请求数超过250的时候,将会导致w3wp.exe占用CPU过高的主要原因。我们公司就出现过这种状况,两个网站A、B,在两台同配置的服务器中部署,两个网站的访问量都很大,访问页面,入口都集中在两个站点的单独页面,且两个站点的IIS连接数都是50左右,程序当时就写的很复杂,A站点页面只有几个简单的Repeater绑定,而B站点的页面中有大量的绑定、字符串过滤替换、Repeater嵌套绑定等等,就在这样的情况下,IIS链接数达到1万多的时候,A站点cpu仍然是35%左右,而B站点就已经到达了90%多,这样一来,服务器压力就很大,并且IIS遭到了很大阻塞。

3、页面中又死循环

如果web站点访问不大,基本上都是内容展示型网站,CPU占用却很高,那么页面中肯定有死循环或者逻辑不对的程序代码,当你找到站点并打开网站查看,是不是有错误一直在报,那就对了。

4、HTTP方式下载的站点

如果是Http形式的下载站点,也会遇到时w3sp.exe占用CPU100%的情况。

5、服务器资源部会释放

有时候,一个站点流量剧增,例如,期间有展会,搞活动,需要用到网站的时候,流量就会剧增,结果操作系统分配了比较多的CPU资源,但是当流量下来的时候,w3wp.exe占用的CPU没有及时释放,仍然爆出在了90%以上。

6、对IIS日志文件操作

比如分析IIS日志文件里的数据,把IIS日志导入到数据库等操作,也会造成w3wp.exeCPU占用过高。

解决方法

1、快速定位找到出问题的站点

利用命令提示行工具:

这里Windows 2003可以利用(iisapp -a)快速的定位找到CPU占用高的站点,当然你的服务器只有一个站点,就不用这么操作了。

Windows 2008 64位的可以利用(c:\windows\system32\inetsrv\appcmd list wp)快速定位,首先打开任务管理器(开始->运行->taskmgr),点击进程,点击任务管理器的查看选项,点击选择列,勾选PID,然后点击确定。

查看->选择列

 

 

选择PID,确定

然后就是完整的进程列表,可以查看PID、CPU、描述。

随后,在cmd中输入c:\windows\system32\inetsrv\appcmd list wp,然后就看到

找出了站点相对应的应用程序池,(一个站点对应一个应用程序池),前面的就是应用池相对应的PID,如下图:

前面的数字就是应用程序池的PID,然后到任务管理器找到相对应的PID,看看那个w3wp.exe占用的CPU过高。

这样就找出了那个占用CPU很高的那个站点啦,然后就去看看这个战点哪方面出问题了。顺着我说的那个几问题找就行。

2、重启IIS和应用程序池

这是紧急处理,治标不治本。

3、给页面加上页面级别缓存

如果web是asp.net程序,那么请一定要<%@ OutputCache Duration="10" VaryByParam="none"%>。但是好多人度没有用好OuputCache,导致经常出现下载页面的问题,所以放弃了使用,OuputCache非常有用,好处有三:直接从内存读页面,页面响应速度更快,用户体验更好;大大的降低了服务器的压力,特别是对于高并发的网站,特别是CPU的压力;减少了DB(数据库)的强求,降低DB的压力。

4、检查页面逻辑

如果WEB流量很低,但是还有w3wp.exe(IIS )CPU占用100%左右的情况,那么就检查页面的代码逻辑吧,很有可能是死循环或大量的运算导致。

版权申明:本站文章均来自网络,如有侵权,请联系01056159998 邮箱:itboby@foxmail.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

猜你还会喜欢下面的内容

    无相关信息

中国领先的互联网域名及云服务提供商

为您提供域名,比特币,P2P,大数据,云计算,虚拟主机,域名交易最新资讯报道

域名注册云服务器