EN
首页 / 新闻资讯 / 行业新闻​ / w3wp.exe的内存及CPU占用不能及时释放应如何处理?

w3wp.exe的内存及CPU占用不能及时释放应如何处理?

时间:2020-07-13 23:11 作者:小编 阅读量:0

大家知道,当服务器受攻击时,正常使用会受到影响,服务器响应也会变慢。但是在服务器并未受到攻击的情况下,在IIS6下,服务器响应速度很慢,那么有可能就是w3wp.exe的内存及CPU占用而没有及时释放。 如果经常出现w3wp.exe的内存及CPU占用不能及时释放,从而导致服务器响应速度很慢。今天我们来介绍以下一些方法来解决上述问题。

首先,要解决CPU占用过多:

1、在IIS中对每个网站进行单独的应用程序池配置,即互相之间不影响。

2、设置应用程序池的CPU监视,不超过25%(服务器为4CPU),每分钟刷新,超过限制时关闭。

其次,要根据 w3wp 取得是哪一个应用程序池:

1、在任务管理器中增加显示 pid 字段。就可以看到占用内存或者 cpu 最高的进程 pid。

2、在命令提示符下运行 iisapp -a。注意,第一次运行,会提示没有 js 支持,点击确定。然后再次运行就可以了。这样就可以看到 pid 对应的应用程序池。(iisapp实际上是存放在C:windowssystem32目录下的一个VBS脚本,全名为 iisapp.vbs,如果禁止了 VBS 默认关联程序,那么就需要手动到该目录,先择打开方式,然后选“Microsoft (r) Windows Based scrīpt Host”来执行,就可以得到PID与应用程序池的对应关系。)

3、到 iis 中察看该应用程序池对应的网站,就ok了,做出上面的内存或CPU方面的限制,或检查程序有无死循环之类的问题。

另外,Vecloud小编建议设置如下:

首先是对CPU的限制:在启用 cpu 监视后,设置该应用程序池最大的cpu使用率为50%。设置刷新 cpu 时间为1分钟,设置操作为“关闭”。最大工作进程数设置为1。这个意思是,IIS刷新检测该独立池的CPU使用情况时间为1分钟,如果超过设置的cpu限制50%,就会发出关闭池的指令,要求池在指定的时间内关闭。如果池成功在这个时间内关闭,IIS会重启动一个新池,此段时间很短,一般不会有什么感觉,池就重新开启了,对于访问网站的人基本是不会有感觉的。

但如果池没有在指定时间内关闭,IIS就会强行关闭它一个刷新CPU时间。在这个停止的时间内,网站无法访问,提示“Service Unavaliable”。

关闭时间和启动时间间隔设置:设短一些比如10秒,这样当网站程序大量占用系统资源时IIS自动快速回收进程并且快速启动进程,网站暂时还可以将就着工作。

对内存的限制及进程回收时间的设置:设置为内存占用超过800M就自动回收内存,虚拟内存没有做限制。进程回收时间保持默认没有修改。这个可以根据自己的情况设置更短的时间。对应用程序池最大虚拟内存也可以在此进行设置,超过了设置的最大虚拟内存,该池会就被回收。

最后,总结一些需要注意的问题:

1、要限制一个站点的CPU使用,必须将该站点设置为独立应用程序池,共用应用程序池是无法限制单个站点的。IIS 独立应用程序池,就需要独立的进程,非常消耗内存。独立池越多,就有越多的W3WP进程。对于每个站点均要独立应用程序池的服务器,在一般的普通P43.0 2G内存的普通服务器上,建议不要超过50个站点,最好30个以内,不然服务器压力非常大。在配置上,一般把资源消耗较大的网站独立一个池,一般普通BBS或者生成Html的系统大概5个站一个池。普通网站以及一些企业站点均共用一个池。

2、根据经验,在服务器硬件允许的情况下,一般不要限制站点内存使用,这样能够保证网站运行,不会出现用户掉线情况。需要限制某站的最大虚拟内存不要小于64M,不然可能出现一些未知的错误。

3、这些都不是根本解决办法,它的根本问题是网站程序有问题,要解决根本问题还要从程序查起。根据本文开头提到的方法查到具体的应用程序池,找到使用此应用程序池的网站,解决网站程序存在的问题,如死循环之类。

4、除了w3wp.exe, 在调用数据库进行大量查询操作的时候,也会大量占用CPU资源,这是难免的(数据库方面的语句及结构优化不在本文讨论范围之内)。技术工程师认为,只要不是CPU长时间占用100%, 一般在75%左右都是正常的。


以上是关于遇到w3wp.exe的内存及CPU占用而没有及时释放而造成服务器相应变慢问题的处理汇总,想更多了解云服务器租赁、物理服务器托管等问题,欢迎咨询。


400-028-9798
微信客服