`
北极的。鱼
  • 浏览: 150683 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

【转】w3wp.exe(IIS ) CPU 占用 100% 的常见原因及解决办法

 
阅读更多

转自:http://blog.csdn.net/ldl22847/article/details/7753865

 

对于IIS 管理员来说,经常会碰到 Web 服务器 CPU 占用 100% 的情况,以下是个人的日常工作总结和一些解决办法,主要用来剖析w3wp.exe(IIS )  占用 CPU 100% 的一些原因 和解决方案,希望能对你有所帮助

 

w3wp.exe的解释 全名,IIS Application Pool Process。 w3wp.exe是IIS工具的一部。w3wp.exe是在IIS(因特网信息服务器)与应用程序池相关联的一个进程,如果你有多个应用程序池,就会有对应的多个w3wp.exe的进程实例运行。这个进程用来分配大量的系统资源。 

 

引起 w3wp.exe(IIS ) Cpu 占用 100% 的常见原因如下:

 

1. Web 访问量大,从而服务器压力大而引起的

 

这个也是最常见的情况。如果 Web 访问量大,特别是同时在线人数过多,处理的 Requests Current(当前请求数)过高,就会同时对 IIS和服务器造成较大的压力。特别是 服务器需要不断的运算,往客户端发送生成后的页面,这些都需要占用大量的CPU 资源,从而造成  Cpu 100%

 

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

 

这个问题,对 w3wp.exe 的 CPU 占用 来说也是蛮严重的,可能在访问量级比较小的情况下并没有多少影响,但是在高并发的网站上面来说,特别是 Asp.Net 的 Requests Current 超过250 的时候,将会是 w3wp.exe 占用 CPU 的一个重要的因素。

 

我曾经碰到过这样一个情况,两个 web(A 和 B) 在两台 配置相当的 服务器中部署,且两个站点的访问量都很大,访问页面都集中在两个站点的两个单独页面,且这两个页面 的 IIS 连接数都是 50个左右,但是页面程序的复杂程度就错了很多,站点中的页面,只有几个 简单的 Repeater 绑定, 而 站点中的页面,则有大量的绑定、字符串过滤替换、Repeater 嵌套绑定等等。这样的情况,在 大流量、高并发的环境中,站点 在 IIS 连接数 达到3 W 多的时候,CPU 占用仍然是 50 % 左右,而 站点在 IIS 连接数 达到 7K 左右的时候,CPU 就 90% 多了,造成了 服务器的压力很大,并且 IIS 遭到了堵塞。

 

3. 页面程序中有死循环

 

如果Web 访问量不大,但是 CPU 却占用很高,那么页面中的程序肯定有死循环或者性能比较严重的 程序语句

 

4. Http方式下载的站点

 

如果站点是HTTP形式下载站,也遇到过 w3wp.exe 占用 CPU 100% 的情况

 

5. 服务器资源不会自动释放

 

有时,一个站点的流量在一个小时内陡增,结果操作系统分配了比较多的 CPU 资源,但是当流量下去后,w3wp.exe 占用的 CPU  并没有及时释放,仍然在保持在 90% 以上

 

6. 对 IIS 日志文件操作

 

比如此时分析 IIS 日志文件里面的数据,把 IIS Log 日志导入到数据库中等操作,也会造成此现象

 

解决办法

 

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

 

利用iisapp -a 命令,快速的定位到出问题的站点。当然如果当前服务器只跑了一个web站点,那么此步骤可以跳过

在 cmd 中 输入 iisapp - a ,会出现下图中的信息:



 
当然,这个要求你没个站点,都要有独立的应用程序池与之对应,应用程序池的名称,最好就是站点的名称,如下图:



 
关于 IIS 的应用程序池的配置,这里就不说了,不懂的可以search  

 

之后,再打开任务管理器,如下图:



 
观察进程为 w3wp.exe 的,查看那个CPU 占用的高,再利用其 PID 于 iisapp 中列出的结果对比,就能轻松的找出是那个站点占用的CPU过高了

 

2. 重启 IIS 和 应用程序池

 

此步是紧急处理,一般都是治标不治本的步骤。如果你的站点搭建的有 负载均衡(负载均衡、NLB),那么请在 负载均衡(负载均衡、NLB)把当前服务器下了,然后重启。如果你没有 负载均衡(负载均衡、NLB),而且你的站点又是在线的,那么,就悲剧10多秒吧,短暂的不能访问吧

 

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

 

如果Web 是 Asp.Net 程序,那么请一定要 <%@ OutputCache Duration="10" VaryByParam="none"%>。但是有好多人都没有用好OutputCache ,导致经常出现下载页面的问题,所以都放弃了使用,这里有 OutputCache 导致页面下载的解决办法 。

 

OutputCache 非常有用,好处有三:直接从内存读页面,页面响应速度更快,用户体验更好;大大的降低了服务器的压力,特别是对于高并发的网站,特别是 CPU 的压力;减少了 DB 的强求,降低 DB(数据库)的压力。

 

4. 检查页面逻辑

 

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

  • 大小: 8.1 KB
  • 大小: 6.1 KB
  • 大小: 12.7 KB
分享到:
评论

相关推荐

    IIS6 w3wp.exe进程占用cpu和内存过多的解决方法.docx

    IIS6 w3wp.exe进程占用cpu和内存过多的解决方法.docx

    通过IIS自带工具Iisapp.vbs查询哪个w3wp.exe站点占用资源(cpu或内存)

    经过查找发现是因为w3wp.exe占用了100%的cpu导致80端口占用巨大,其它的操作都无法进行。在任务管理器中看到的是w3wp.exe占用资源过多,那么就需要查看w3wp.exe的pid值。下面是寻找出错网站的过程:要找到这个网站,...

    Killw3wp.exe

    对于IIS 管理员来说,经常会碰到 Web 服务器 CPU 占用 100% 的情况,w3wp.exe是IIS工具的一部。w3wp.exe是在IIS(因特网信息服务器)与应用程序池相关联的一个进程,如果你有多个应用程序池,就会有对应的多个w3wp.exe...

    w3wp.exe占用CPU和内存问题过高的解决方法

    再设置当内存或者cpu占用超过多少,就自动回收内存 一般来说,这样就可以解决了。但仍然会出现个别网站因为程序问题,不能正确释放。 那么,怎么样才能找到是哪一个网站的? 1、在任务管理器中增加显示pid字段。就...

    IIS6 w3wp.exe进程占用cpu和内存过多的解决方法

    在IIS6下,经常出现w3wp.exe的内存及CPU占用不能及时释放,从而导致服务器响应速度很慢。 解决CPU占用过多:1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。2、设置应用程序池的CPU监视,不超过...

    w3wp.exe进程占用内存过高解决方法

    w3wp.exe是在IIS(因特网信息服务器)与应用程序池相关联的一个进程,如果你有多个应用程序池,就会有对应的多个w3wp.exe的进程实例运行。这个进程用来分配大量的系统资 今天研究了一下,可以做以下配置: 1、在IIS中...

    w3wp.exe占用cpu过高的解决方法第1/2页

    iisapp.vbs:IIS 应用程序查询脚本 报告为特定的应用程序池提供服务且当前正在运行 w3pwp.exe 进程的进程标识符 (PID)。 语法 iisapp [a/ AppPoolName | /p AppPoolID] 参数 /a AppPoolName 指定特定应用...

    服务器上w3wp.exe占用cpu过多有时候超过50%的原因分析

    解决CPU占用过多: 1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。 2、设置应用程序池的CPU监视,不超过25%(服务器为4CPU),每分钟刷新,超过限制时关闭。 根据w3wp取得是哪一个应用程序池: ...

    w3wp.exe内存占用过高(网站打不开,应用程序池回收就正常)

    服务器cpu,内存正常, 部分网站打不开,应用程序...服务器\IIS和ASP问题请问下各位“网站最近每天要出现几次打不开很慢`只显示tile标题其它无,站点是ASP的,前台生成的html,今天看到的W3WP.exe占用最高达280M...

    认识w3wp.exe进程,从根本上解决占用资源较大问题

    这些都不是解决办法,它的根本问题是你的那个网站程序有问题,在找到问题以前可以先打开iis找到应用程序池先用右键属性中设置“性能”把其中的cpu设成大于60%关闭应用程序池,把关闭时间和开启时间设短一些比如10秒...

    自己总结的Win+IIS+PHP+MySQL疑难杂症解决办法

    Windows2003+IIS6.0+php(ISAPI)环境中w3wp.exe占用CPU资源的解决办法; MySQL无法正常启动,服务器管理器里面按钮灰色等MySQL问题解决办法; windows2003服务器上级目录权限导致的问题; MYSQL提示Table '表名' doesn't ...

    windbg64位程序和中文使用文档附加例子

    1.本地代码好好的,放服务器上运行一段时间后,IIS服务突然占用 w3wp.exe CPU突然100% ,不得不回收应用程序池,如果哪次回收晚了,被客户发现,后果很痛苦~ 2.你的w3wp.exe 内存高居不下 并且逐步上升 3.cpu很低,内存也很...

    win2003中的w3wp.exe进程大量占用cpu资源的各种问题解决方法

    1:使用 MicrosoftJet 数据库引擎 Web 应用程序可能停止响应负载,造成假死: 原因:发生此问题是因为 Jet 数据库引擎中存在缺陷。 Microsoft Windows Server 2003 上只会出现此问题。 在 Windows Server 2003, ...

    服务器CPU监控小工具

    作用:譬如作者网站,站长帮手网,每天会有一到两次CPU占用率会达到100%。后经观察,是因为每天查询数据过大,导致IIS连接假死,导致占用大量的CPU。 而通过回收进程和停止进程都不能达到马上见效的作用,而结束w3wp...

    Win2003 IIS 6.0 假死问题解决方法 图文教程

    几天服务器总是运行缓慢,远程登录后发现一个 w3wp.exe 的进程占用了 100% CPU。

    MS ACCESS 2000 MDB数据库批量压缩修复优化软件

    ASP + MS ACCESS 2000 数据库的网站,在长时间运行后,MDB数据库会产生大量的“碎片”,导致访问非常缓慢,表现在 w3wp.exe 占用的 CPU 资源非常低,但 ASP + MDB 数据库的ASP页面无法访问,或 ASP页面访问超时。...

    iisapp.vbs iis pid了解对应的网站或应用池

    有时打开资源管理器后常发现N个w3wp进程,有时某个进程占用了过高的内存,以前不得不挨个回收应用程序池来观察是哪个应用程序池对应哪个w3wp进程,最近在网上发现一篇文章,介绍一方法,可以查到w3wp对应的池子。...

Global site tag (gtag.js) - Google Analytics