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

今天研究了一下,可以做以下配置:
1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。
2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。同时,设置同时运行的w3wp进程数目为1。再设置当内存或者cpu占用超过多少,就自动回收内存

一般来说,这样就可以解决了。但仍然会出现个别网站因为程序问题,不能正确释放。
那么,怎么样才能找到是哪一个网站的?

1、在任务管理器中增加显示pid字段。就可以看到占用内存或者cpu最高的进程pid
2、在命令提示符下运行iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池
3、到iis中察看该应用程序池对应的网站,就ok了。

  最近公司服务器总出现CPU100%占用情况,服务器配置为双核Xeon3.0x2,2G ECC内存。

  发现是w3wp.exe长时间占用大量CPU.出现这种情况应该是网站程序存在死循环等问题所致。

  在找到问题以前可以暂时采取限制w3wp进程CPU使用率的方法保证网站可以将就着工作:

  在IIS6下,经常出现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 Script Host”来执行,就可以得到PID与应用程序池的对应关系。)

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

  解决内存占用过多,可以做以下配置:

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

  2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。再设置当内存占用超过多少(如500M),就自动回收内存。

  我的设置如下:

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

  

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

  

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

  

  最后综合落伍wlmmc的一些经验,总结一些需要注意的问题:

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

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

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

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

  非常愿意和各位在服务器配置、优化、安全等方面进行交流和讨论。

(0)

相关推荐

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

    在IIS6下,经常出现w3wp.exe的内存及CPU占用不能及时释放,从而导致服务器响应速度很慢. 解决CPU占用过多:1.在IIS中对每个网站进行单独的应用程序池配置.即互相之间不影响.2.设置应用程序池的CPU监视,不超过25%(服务器为4CPU),每分钟刷新,超过限制时关闭. 根据w3wp取得是哪一个应用程序池:1.在任务管理器中增加显示pid字段(任务管理器>查看>选择列>PID(进程标识符)).就可以看到占用内存或者cpu最高的进程pid. 2.在命令提示符下运行iisapp

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

    服务器cpu,内存正常, 部分网站打不开,应用程序池回收就正常,如何解决? 提问: 服务器\IIS和ASP问题请问下各位``网站最近每天要出现几次打不开很慢`只显示tile标题其它无,站点是ASP的,前台生成的html,今天看到的W3WP.exe占用最高达280M,一般都只有170M左右IIS管理里地址池回收一下就正常`是什么原因? 补充:服务器CPU占用极少`只有百分几点物理内存6G 内存占用量也极少.PS:主要问题就是这个程序池.网站出现慢或打不开,一回收就正常. WEB服务器高手--们在哪

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

    w3wp.exe是在IIS(因特网信息服务器)与应用程序池相关联的一个进程,如果你有多个应用程序池,就会有对应的多个w3wp.exe的进程实例运行.这个进程用来分配大量的系统资 今天研究了一下,可以做以下配置: 1.在IIS中对每个网站进行单独的应用程序池配置.即互相之间不影响. 2.设置应用程序池的回收时间,默认为1720小时,可以根据情况修改.同时,设置同时运行的w3wp进程数目为1.再设置当内存或者cpu占用超过多少,就自动回收内存 一般来说,这样就可以解决了.但仍然会出现个别网站因为程序

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

    经过查找发现是因为w3wp.exe占用了100%的cpu导致80端口占用巨大,其它的操作都无法进行. 在任务管理器中看到的是w3wp.exe占用资源过多,那么就需要查看w3wp.exe的pid值. 下面是寻找出错网站的过程:要找到这个网站,必须把有问题的进程跟该网站的应用程序池联系起来.首先设置任务管理器的查看方式,加入PID的显示: 然后再命令行运行iisapp -a,可以看到PID跟应用程序池的对应关系: 再去iis中看该应用程序池对应的网站,有问题的网站就找到了,剩下的就是这个网站代码中的

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

    今天研究了一下,可以做以下配置: 1.在IIS中对每个网站进行单独的应用程序池配置.即互相之间不影响. 2.设置应用程序池的回收时间,默认为1720小时,可以根据情况修改.同时,设置同时运行的w3wp进程数目为1.再设置当内存或者cpu占用超过多少,就自动回收内存 一般来说,这样就可以解决了.但仍然会出现个别网站因为程序问题,不能正确释放. 那么,怎么样才能找到是哪一个网站的? 1.在任务管理器中增加显示pid字段.就可以看到占用内存或者cpu最高的进程pid 2.在命令提示符下运行iisapp

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

    解决CPU占用过多: 1.在IIS中对每个网站进行单独的应用程序池配置.即互相之间不影响. 2.设置应用程序池的CPU监视,不超过25%(服务器为4CPU),每分钟刷新,超过限制时关闭. 根据w3wp取得是哪一个应用程序池: 1.在任务管理器中增加显示pid字段.就可以看到占用内存或者cpu最高的进程pid 2.在命令提示符下运行iisapp -a.注意,第一次运行,会提示没有js支持,点击确定.然后再次运行就可以了.这样就可以看到pid对应的应用程序池.(iisapp实际上是存放在 C:win

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

    iisapp.vbs:IIS 应用程序查询脚本 报告为特定的应用程序池提供服务且当前正在运行 w3pwp.exe 进程的进程标识符 (PID). 语法 iisapp [a/ AppPoolName | /p AppPoolID] 参数 /a AppPoolName 指定特定应用程序池的名称.(可选项) /p AppPoolID 按 ID 号指定应用程序池.(可选项) 注释 如果未指定应用程序池名或 ID,则 iisapp 列出所有运行应用程序. 仅当使用 /s 时,才可使用 /u 和 /p 命令

  • spoolsv.exe占用cpu 99%的完美解决方法

    spoolsv.exe占用cpu 99%的解决方法  spoolsv.exe占cpu 99%的解决方法 解决方法其实很简单: 就是清空 C:\WINDOWS\system32\spool\PRINTERS 目录下所有的文件: 前提是:你已经使用了杀毒软件排除了病毒和已经使用防间谍软件排除了恶意软件. 相关问题的Microsoft官方文档: Windows 后台打印程序没有删除打印作业后台文件导致的打印程序可能会反复地尝试对该打印作业进行后台处理解决方案 为避免发生此问题,请不要在打印后台文件位于

  • Tomcat进程占用CPU过高的解决方法

    目录 案例 上下文切换开销? 总结 CPU经常会成为系统性能的瓶颈,可能: 内存泄露导致频繁GC,进而引起CPU使用率过高 代码Bug创建了大量的线程,导致CPU频繁上下文切换 通常所说的CPU使用率过高,隐含着一个用来比较高与低的基准值,比如 JVM在峰值负载下的平均CPU利用率40% CPU使用率飙到80%就可认为不正常 JVM进程包含多个Java线程: 一些在等待工作 另一些则正在执行任务 最重要的是找到哪些线程在消耗CPU,通过线程栈定位到问题代码 如果没有找到个别线程的CPU使用率特别

  • PyTorch 随机数生成占用 CPU 过高的解决方法

    PyTorch 随机数生成占用 CPU 过高的问题 今天在使用 pytorch 的过程中,发现 CPU 占用率过高.经过检查,发现是因为先在 CPU 中生成了随机数,然后再调用.to(device)传到 GPU,这样导致效率变得很低,并且CPU 和 GPU 都被消耗. 查阅PyTorch文档后发现,torch.randn(shape, out)可以直接在GPU中生成随机数,只要shape是tensor.cuda.Tensor类型即可.这样,就可以避免在 CPU 中生成过大的矩阵,而 shape

  • idea对CPU的占用率过大问题的解决方法

    背景:昨晚有一次敲完代码运行完程序后,idea非常卡顿,连输入代码都不能进行,因为有点晚并且累了,所有就关了电脑,今天早上再次打开idea,还是一样卡顿,因为idea的试用期明天就到期了,所有就先破解了idea,破解完之后,还是非常流畅的,但是一运行程序就拉胯了,就先百度看一下解决方案,以下几个解决方案试了,基本问题还是没有解决,就在群里问了几个大佬,方案不是重装系统就是换电脑,同时开始了电脑的配置讨论,重装系统和换电脑的什么是不可能的,所有只有自己慢慢摸索了. 1 修改idea配置文件安装目录

  • Java 内存溢出的原因和解决方法

    你是否遇到过Java应用程序卡顿或突然崩溃的情况?您可能遇到过Java内存泄漏.在本文中,我们将深入研究Java内存泄漏的确切原因,并推荐一些最好的工具来防止内存泄漏发生. 什么是JAVA内存泄漏? 简单地说,Java内存泄漏是指对象不再被应用程序使用,而是在工作内存中处于活动状态. 在Java和大多数其他编程语言中,垃圾收集器的任务是删除不再被应用程序引用的对象.如果不选中,这些对象将继续消耗系统内存,并最终导致崩溃.有时java内存泄漏崩溃不会输出错误,但通常错误会以java.lang.Ou

  • android不读入内存获取图像宽高信息的方法

    本文实例讲述了android不读入内存获取图像宽高信息的方法.分享给大家供大家参考.具体如下: BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/test.jpg", options); int w = options.outWidth; int

  • Android 5.1 WebView内存泄漏问题及快速解决方法

    问题背景 在排查项目内存泄漏过程中发现了一些由WebView引起的内存泄漏,经过测试发现该部分泄漏只会出现在android 5.1及以上的机型.虽然项目使用WebView的场景并不多,但秉承着一个泄漏都不放过的精神,我们肯定要把它给解决了. 遇到的问题 项目中使用WebView的页面主要在FAQ页面,问题也出现在多次进入退出时,发现内存占用大,GC频繁.使用LeakCanary观察发现有两个内存泄漏很频繁: 我们分析一下这两个泄漏: 从图一我们可以发现是WebView的ContentViewCo

随机推荐