近在互联网上提这个问题的网友较多,典型问题:这几天服务器总是运行缓慢,远程登录后发现一个w3wp.exe的进程占用了100% cpu.

在windows server 2003中对于每一个web应用,iis 6.0都用一个独立的w3wp.exe的实例来运行它。w3wp.exe也称为工作进程(每一个主机头都会有一个)

直接在任务管理器中结束进程是不起作用的,结束后不久它会执行启动,要想结束它可以在iis中找到相应的应用程序池停止相应的应用程序池工作。

这些都不是解决办法,它的根本问题是你的那个网站程序有问题,在找到问题以前可以先打开iis找到应用程序池先用右键属性中设置“性能”把其中的cpu设成大于60%关闭应用程序池,把关闭时间和开启时间设短一些比如10秒,这样当您的网站程序大量占用系统资源时iis自动快速回收进程并且快速启动进程,您的网站暂时还可以将就着工作。

要解决根本问题还要从程序查起,您可以在iis中的应用程序池中右键创建多个应用程序池,然后在每个主机头中的文件家选项的底部将应用程序池对应道刚才建好的应用程序池,然后一个一个关闭在任务管理器中看看是哪个程序占用的资源较大。

下面是一些网友的相关贴子也许对大家有帮助

朋友的web服务器一直运行正常,但这几天cpu占用率一直将近100%,遂去看个究竟。

服务器采用windows 2003, 网站使用asp+access数据库, 查看进程列表发现w3wp.exe 占用了70%以上的cpu,

查看web日志,站点访问量不大,查看tcp连接也不多。用net stop w3svc停掉web服务,cpu占用立即正常,net start w3svc启动web后不久现象又出来了。停止所有虚拟站点,新建一个虚拟站点发现并没有问题,怀疑是站点本身的代码问题。

检查首页代码,大致是如下结构:

粗看一下并没有问题,但就是这段代码造成了w3wp.exe占用大量cpu,难道是死循环?似乎没有理由。在循环体内加入计数,发现确实是死循环,说明rs.eof一直为false,加入如下代码:

if rs.eof = true then response.write "eof is true"

if rs.eof = false then response.write "eof is false"

发现输出竟然是eof is true eof is false, 说明无法判断rs.eof的值,为何如此百思不得其解。检查数据库,发现库中并没有mytable表, 如果该表不存在,rs.open "select * from mytable", conn 就会出错,为何没有出错,很有可能捕获的异常被忽略了。

检查包含文件conn.asp, 发现了异常处理代码:

on error resume next

原来问题在此。

on error resume next忽略了查询表时的失败以及后续的错误,造成进入死循环。

那为何网站本来运行正常,现在却找不到mytable表了呢?仔细检查网站才发现“有‘客'自远方来”,上传了后门工具、删除了多张数据表,害我忙活了一天。

更多的内容大家还可以到:http://www.microsoft.com/china/technet/security/guidance/secmod93.mspx

查找更详细的安全设置

windows2003  iis6.0假死问题解决

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

问题的原因最终找到两个:

1.采用的jet  数据库连接方式存在问题:http://support.microsoft.com/?id=838306

补丁下载:

chs:windowsserver2003-kb838306-x86-chs.exe

enu:windowsserver2003-kb838306-x86-enu.exe

2.将access数据库扩展名改为asp

下面是我的差错过程和解决方案:

搜索一下发现类似问题还真不少,那个w3wp的进程是iis6.0的应用程序池,网上的说法有两种,一是因为asp或者asp.net代码中含有死循环引起的。但是服务器上这么多网站,谁知道那个网站出了问题。二是由于上面的jet连接数据库方式的bug引起的,下载838306的补丁,或者升级到sp1可以解决这个问题,但是打了这个补丁后,有些网站的问题依然存在。

又去搜索,有人说将每个网站建立独立的应用程序池,应用程序池的安全性帐户设为本地服务即可。方法如下:

首先新建应用程序池:

然后将网站的应用程序池指向刚才建立的应用程序池:

在建立完所有应用程序池后,统一修改应用程序池的属性:

将应用程序池安全帐户指定为本地服务:

设置完这些之后,问题依然存在,这样一个网站出现问题,不致影响其他网站,但是这个网站仍然占用大量资源,导致其它网站响应缓慢。不过在任务管理器中出现了每个应用程序池的进程,因此可以找到具体出问题的进程了。

下面是寻找出错网站的过程:要找到这个网站,必须把有问题的进程跟该网站的应用程序池联系起来。首先设置任务管理器的查看方式,加入pid的显示:

然后再命令行运行iisapp  -a,可以看到pid跟应用程序池的对应关系:

再去iis中看该应用程序池对应的网站,有问题的网站就找到了,剩下的就是这个网站代码中的问题了。

在某位网站管理员的纠缠不休下,我终于无法忍受,帮他找错误-  -  无数次配置iis,网站程序也换了,该升级的也升级了,问题还是存在,黔驴技穷,把网站下载到本地看看到底怎么回事。当我试图打开他的数据库的时候,问题出现了:

他的数据库是.asp的扩展名,要先修改为.mdb才能打开,但是当我点击要改名字的时候,我的电脑没有响应了~!看来问题在这个数据库了。

用命令行rename之后,打开数据库,修复,似乎没有任何问题,但是再改为.asp时,又出现了刚才的问题。哈~原来是.asp的扩展名在作怪。

但是我试着将其他的数据库改为.asp,没有问题。根本原因不得而知,望知情者告知。

最后,在iis中随便添加了一个isapi对应到mdb,造成mdb无法执行,防止下载,将所有的.asp的数据库改回.mdb,问题解决。

1.w3wp.exe,应用程序,应用程序池之间的关系

一个应用程序池可以包含多个应用程序,一个应用程序池创建一个w3wp.exe进程.那么我们就不能简单的说一个应用程序对应一个w3wp.exe进程了!

其实是多个应用程序对应一个w3wp.exe进程的.

2.如何启动和关闭w3wp.exe这个进程

w3wp.exe这个进程将在你访问www应用程序的时候启动.有人就会这么问了:"我启动了一个web应用程序,发现系统自动创建了一个w3wp.exe进程。但我关闭这个web应用程序后,发现这个刚创建的w3wp.exe进程还在,请问如何关闭该进程。"

这个进程不会在你关闭了这个程序以后,就马上关闭的.那是因为http是无连接的访问,当你关闭了web网页,不会返回相应的关闭信息,所以w3wp.exe这个进程不会因为你关闭了web应用程序尔关闭.

那么如何关闭这个进程呢?在应用程序池的配置中,"空闲超时"中设定合适的时间,系统默认的是20分钟.设定好指定的时间,那么在这个时间范围内没有在访问应用程序,那么系统会自动的关闭w3wp.exe这个进程的.而不需要我们人为的干预的.

要是你有这个精力的话,也可以在windows任务管理器里面,结束这个进程的生命(^_^)!

3.如何让w3wp.exe进程长时间的运行.

w3wp.exe这个进程的默认生命是1740分钟,但依然是在这种默认的自然规律下,w3wp.exe将在自己失业20分钟后,被系统直接枪杀.

这样就可以看出,要想让w3wp.exe长时间的生存,那我们可以通过”空闲超时”不作处理来达到我们的目的.

这样可是缺点多多,但是为了达到个人的私欲,这又算什么.本来也不是什么正式的项目.

4.如何降低w3wp.exe占用的内存和cpu

结合网上的诸多建议,主要的解决办法是:

a.在iis中对每个网站进行单独的应用程序池配置;

b.合理的配置你的应用程序池;

w3wp对应进程_认识w3wp.exe进程,从根本上解决占用资源较大问题相关推荐

  1. mysql-nt.exe w3wp.exe cpu 100%_认识w3wp.exe进程,从根本上解决占用资源较大问题

    认识w3wp.exe进程,从根本上解决占用资源较大问题 发布时间:2019-12-14 16:19 来源:互联网 当前栏目:web技术类 在windows server 2003中对于每一个web应用 ...

  2. broker可以禁用吗 time_RuntimeBroker是什么进程,能禁用RuntimeBroker.exe进程么?

    RuntimeBroker是什么进程,能禁用RuntimeBroker.exe进程么?今天看到网上有两位朋友因为这个进程,打起了口水仗,都是为别人好,这又何必呢?不过RuntimeBroker.exe ...

  3. java如何添加进程_如何创建一个进程,如何进程调用进程

    java一般用线程就够了,多进程优势在于每个进程互不干扰,劣势在于太耗费内存,任何事情都不是绝对的,在编写Java程序时,有时候需要在Java程序中执行另外一个程序. 1.启动程序 Java提供了两种 ...

  4. java通过进程名称杀进程_根据进程名杀死进程 -kill进程名

    知道进程名怎样杀死这个进程. #pkill 进程名 或是 #killall 进程名 的确这个两个命令都能做到这些,而且我们平时一般知道进程名需要杀死进程的时候也都是用的这两个命令.可是他叫我用kill ...

  5. 可疑进程描述(二)----rundll32.exe进程详述

    Rundll32.exe, 顾名思义,"执行32位的DLL文件".它的作用是执行DLL文件中的内部函数,这样在进程当中,只会有Rundll32.exe,而不会有DLL后门的进程,这 ...

  6. potplayer 多个进程_操作系统 | 进程同步与进程互斥

    主题            进程同步与进程互斥            01 进程同步  问题 在多道批处理系统中,多个进程是并发执行的,而并发执行的进程具有异步性,也就是说,各个进程以各自独立的.不可 ...

  7. 电脑怎么结束进程_结束员工电脑进程/活动窗口的软件

    限制员工的操作行为通常是通过 禁止登陆被限制的QQ号.禁止使用被归进软件黑名单里的软件.禁止某些终端截屏.或者是限制U盘使用等操作来进行.但是在Ping32终端安全管理系统上主控端可以通过查看任务管理 ...

  8. kill 进程_如果有个进程kill 9杀不掉,怎么办?

    点击上方蓝色"后端面试那些事儿",选择"设为星标" 学最好的别人,做最好的我们 来源 | https://blog.csdn.net/21aspnet/arti ...

  9. win10taskkill强行结束进程_批处理文件BAT找到进程PID并强制结束TaskKill进程

    Taskkill 1 简介 taskkill 是用来终止进程的.具体的命令规则如下: TASKKILL [/S system [/U username [/P [ password ]]]] { [/ ...

  10. mysql 僵尸进程_如何查找僵尸进程并Kill之,杀不掉的要查看父进程并杀之

    用ps和grep命令寻找僵尸进程 #ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]' 命令注解: -A 参数列出所有进程 -o 自定义输出字段 我们设定显示字段为 ...

最新文章

  1. memory matlab,memory – 在MATLAB中处理大量结构
  2. OSI协议和TCP/IP协议笔记
  3. 向大家推荐一个.Net游戏引擎:Artificial Engines
  4. Jmeter测试Mysql数据库-入门篇
  5. BML CodeLab重磅更新:在Windows上可原生Linux AI开发
  6. CVPR 2021 | 基于跨任务场景结构知识迁移的单张深度图像超分辨率方法
  7. matlab特征点数量,特征点检测效果评估(matlab代码)
  8. mysql-多表查询-内联查询左查询
  9. 使用Python分析网易云歌曲评论信息,我发现了这些有趣的规律
  10. 在哪里学python-在合肥哪里可以学Python
  11. 窗口的新建移动和改变大小
  12. 传输层协议(12):拥塞控制(1)
  13. Java String startsWith()方法
  14. Goole helper使用
  15. interface详解
  16. 计算机无法对NAS硬盘操作,群晖NAS联机失败不要慌,我用经验告诉你,这样做就能完美解决...
  17. Redis系列(三)--过期策略
  18. 【Android-Kotlin】匿名内部类与Lambda 表达式(附RecycleView监听)
  19. html js正则表达式语法,js正则表达式 非中文_js正则表达式匹配中文_js正则表达式语法...
  20. 房地产数据-python爬虫+数据可视化

热门文章

  1. 为你揭秘小程序音视频背后的故事......
  2. 架构之美阅读笔记06
  3. 20145326蔡馨熠《信息安全系统设计》第7周学习总结
  4. 将“早期版本的Windows”改名
  5. Swift实现糗事百科Demo(实战项目)
  6. 把触发器说透(转载)
  7. 【转】ASP.NET AJAX入门系列(9):使用ScriptManager控件
  8. 基本地图加载完整示例
  9. 《Adobe Premiere Pro CC经典教程(彩色版)》——第2课 设置项目 2.1 开始
  10. Linux下配置两个或多个Tomcat启动