w3wp.exe(IIS ) CPU 占用 100% 的常见原因及解决办法
对于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个左右,但是页面程序的复杂程度就错了很多,A 站点中的页面,只有几个 简单的 Repeater 绑定, 而 B 站点中的页面,则有大量的绑定、字符串过滤替换、Repeater 嵌套绑定等等。这样的情况,在 大流量、高并发的环境中,A 站点 在 IIS 连接数 达到3 W 多的时候,CPU 占用仍然是 50 % 左右,而 B 站点在 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%
左右的情况,那么就检查页面的代码逻辑吧,很有可能是死循环或大量的运算导致。
w3wp.exe(IIS ) CPU 占用 100% 的常见原因及解决办法的更多相关文章
- w3wp.exe(IIS ) CPU 占用 100% 的常见原因
引起 w3wp.exe(IIS ) Cpu 占用 100% 的常见原因如下: 1. Web 访问量大,从而服务器压力大而引起的 2. 动态页面(.aspx)的程序逻辑复杂程度 3. 页面程序中有死循环 ...
- Python3 Selenium定位不到元素常见原因及解决办法
Python3 Selenium定位不到元素常见原因及解决办法 一.问题描述 在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况: 报错信息: no such e ...
- Connection reset by peer的常见原因及解决办法 RST 大文件上传
Connection reset by peer的常见原因及解决办法 Connection reset by peer的常见原因 - 简书 https://www.jianshu.com/p/263e ...
- Connection reset by peer的常见原因及解决办法
转自:https://blog.csdn.net/xc_zhou/article/details/80950753 1,如果一端的Socket被关闭(或主动关闭,或因为异常退出而 引起的关闭),另一端 ...
- Sql Server 阻塞的常见原因和解决办法
1. 由于语句运行时间太长而导致的阻塞,语句本身在正常运行中,只须等待某些系统资源 解决办法: a. 语句本身有没有可优化的空间 b. Sql Server 整体性能如何,是不是有资源瓶颈影响了语句执 ...
- Python+Selenium定位不到元素常见原因及解决办法(报:NoSuchElementException)
在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况(报selenium.common.exceptions.NoSuchElementException ...
- Selenium2(webdriver)_定位不到元素常见原因及解决办法
在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况,一般可以从以下几个方面着手解决: 1.Frame/Iframe原因定位不到元素: 这个是最常见的原因,首先要理 ...
- ping不通的常见原因和解决办法
Ping是Windows.Unix和Linux系统下的一个命令.ping也属于一个通信协议,是TCP/IP协议的一部分.利用“ping”命令可以检查网络是否连通.如果ping不通则可以通过以下方式寻找 ...
- 服务器php-cgi.exe进程过多,导致CPU占用100%的解决方法
再使用iis服务器中经常会出现php-cgi.exe进程过多,导致CPU占用100%,最终造成网站运行过慢甚至卡死的情况,重启iis会好一会,过一段时间久出现这种情况,为什么会出现这种情况呢,应该怎么 ...
随机推荐
- Allok Video to FLV Converter 可以用的 FixFlash.exe
纸飞机 拷至 c:\windows\system32 ok 下载链接:http://pan.baidu.com/s/1eQwz0DO 软件下载:http://pan.baidu.com/s/1sjGv ...
- jQuery漂亮图标的垂直导航菜单
效果展示 http://hovertree.com/texiao/nav/3/ jQuery漂亮图标的垂直导航菜单 是一款当鼠标滑过菜单项时,会有一个背景遮罩层跟着鼠标移动,效果非常炫酷,图标还是矢量 ...
- TreeView使用
1.添加节点,实现拖拽功能 private void Form1_Load(object sender, EventArgs e) { TreeNode node1 = new TreeNode(); ...
- JSONObject和JSONArray的关系
JSON字符串的最上一层,肯定是一个JSONObject,JSONObject的下一层,可以包含JSONArray,JSONArray又包含了若干个JSONObject.用例子来说明: package ...
- tps (事务处理系统)
事务处理系统:Transaction processing systems (TPS) 提高事务处理效率与保证其正确性 在数据(信息)发生处将它们记录下来 通过OLTP产生新的信息 将信息保存到数据库 ...
- Extjs 窗体居中,双重窗体弹出时清除父窗体的鼠标事件
这个是监控窗体缩放的事件 缩放中居中主要在 'beforeshow' 和 'destroy'两个事件里面监控 var EditTempWindow; Ext.EventManager.onWindow ...
- Android填坑系列:Android JSONObject 中对key-value为null的特殊处理
在与服务端通过JSON格式进行交互过程中,不同版本的JSON库在对于key-value为null情况上的处理不同. Android自带的org.json对key-value都要求不能为null,对于必 ...
- [小北De编程手记] : Lesson 06 玩转 xUnit.Net 之 定义自己的FactAttribute
xUnit.Net本身提供了标记测试方法的标签Fact和Theory.在前面的文章<Lesson 02 玩转 xUnit.Net 之 基本UnitTest & 数据驱动>中,也对它 ...
- rabbitmq启动异常之error,{not_a_dets_file recovery.dets
中午,公司群里面测试人员@笔者说,早上测试服务器异常,MQ起不来,重启os了也起不来,报错,上去看下了早上又因为内存oom被内核killed了,启动了下,确实启动报错,erl vm进程起来了,但是be ...
- SequenceInputStream
SequenceInputStream从名字上看, 他是一个序列字节输入流 既然是个序列 那么意味着 SequenceInputStream装着许多的输入流 所以 可以用他来合并文件 Sequence ...