首页 > 系统相关 >iis占用服务器内存,W3wp.exe 进程占用内存高消耗CPU近100%导致网站反应速度缓慢的解决方案

iis占用服务器内存,W3wp.exe 进程占用内存高消耗CPU近100%导致网站反应速度缓慢的解决方案

时间:2022-08-16 23:00:19浏览次数:87  
标签:exe 网站 占用 应用程序 内存 进程 CPU

iis占用服务器内存,W3wp.exe 进程占用内存高消耗CPU近100%导致网站反应速度缓慢的解决方案

如何降低W3WP.EXE占用的内存和CPU?结合网上的诸多建议,主要的解决办法是:

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

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

c.找出具体网站站点的程序问题。

问题描述

环境:win2003server+IIs+ASP+MSSQL

现象:每隔一段时间(不定,有时几分钟,有时半小时)出现一次网站打开非常缓慢,甚至有时会出现超时打不开站点,此时查看服务器端的进程,CPU占用率达到100%,其中w3wp占用超过80%,于是所有服务器端的操作也变得缓慢。

简单解决方法:每次现象出现时,立即登录服务器直接结束w3wp进程或重启IIS服务。

解决方案参考

针对该类问题,具体可参考如下所述方法来逐步寻找根本的解决途径:

1、在IIS中对每个网站进行单独的应用程序池配置,即使之互相之间不影响。(但需要注意一点:进程池越多越占用内存,由于访问网站之后往往不会立即释放内存资源。)

2、设置应用程序池的回收时间。默认为1720小时,可以根据情况修改。同时,设置同时运行的w3wp进程数目为1。再设置当内存或者cpu占用超过多少,就自动回收内存 。

3、设置固定时间回收进程。比如在凌晨1:00至9:00之前访问人数都比较少,影响很少小,可以设定每天在这个时间段内进行内存回收,以减少服务器因 为内存不足带来的影响。设定固定时间回收进程在IIS6中没有限制次数,所以可根据实际情况来设定时间。比如:晚上12:00,8:00,12:30,6:30等时间进行有效的进程池资源回收。

一般来说,做完以上操作就可以解决了。但仍然会可能出现因为个别网站的程序问题,不能及时释放资源。所以我们可以找出该网站,然后调试分析其程序问题所在。

那么,怎么样才能确定是哪一个网站呢?参考方法如下:

1、在任务管理器中增加显示pid字段。方法为:打开任务管理器-切换到《详细信息》,在列表上点右键,选中“PID(进程标识符)”前的复选框。这样就可以看到占用内存或者cpu最高的进程pid。

2、在命令提示符下运行iisapp -a。注意,第一次运行,可能会提示没有js支持,点击确定进行注册,然后再次运行该命令就可以了。这样就可以看到pid对应的应用程序池。

3、到iis中察看该应用程序池对应的网站,进行更详细的分析,具体问题具体对待。

最后的补充

总结一些需要注意的问题:(摘)

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

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

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

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

https://blog.csdn.net/goolean/article/details/125441941

标签:exe,网站,占用,应用程序,内存,进程,CPU
From: https://www.cnblogs.com/sunny3158/p/16593323.html

相关文章

  • String在内存中如何分布
    一、设计思想及原理设计思想1、字符串分配和其他的对象分配一样,耗费高昂的时间与空间代价,作为最基础的数据类型,大量频繁的创建字符串,极大程度地影响程序的性能。2、JVM......
  • Cache写策略:Cache和内存的友好沟通
    出现背景本质上是上级存储器对下级存储器的写操作,没别的 算法当Cache命中时(要写的块正好在Cache里)1、全写法Cache来全写了,CPU在尽力写了,内存在干啥?#内存状态就是说......
  • qt5.9 +vs2015 32bit 错误“-1: error: LNK1158: 无法运行“rc.exe”
    开发平台qt5.9.0+vs201532bit....在准备运行vs2015及安装了vs2019后,运行原来可以运行的程序时,出现了错误“-1:error:LNK1158:无法运行“rc.exe”复制了“C:\Progra......
  • linux 命令查看内存和cpu信息
    linux命令查看内存和cpu信息1、查看CPU信息命令cat/proc/cpuinfo2、使用top命令查看CPU的使用情况top3、free命令查看内存free4、df(diskfree):显示磁盘分区上......
  • document.execCommand(‘copy’)无效的原因
    document.execCommand('copy')IOS返回false;为了安全考虑,exeCommand()可以操作系统剪切板,可能被恶意利用。所以规定不能用JS“直接”调用execCommand(‘copy’),而需要放......
  • 内存管理
    内存管理不同语言的内存管理不同语言的内存管理方式:C/C++这种内存堆空间的申请和释放完全靠自己管理Java依赖JVM来做内存管理,不了解jvm内存管理的机制,很可能会因......
  • 8、ThreadPoolTaskExecutor线程并发
    一、线程池的优点:1、降低资源消耗。通过重复利用自己创建的线程降低线程创建和销毁造成的消耗。2、提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行......
  • 【C语言】使用dup2,execlp,实现保存系统命令结果到文件
    #include<fcntl.h>#include<stdio.h>#include<stdlib.h>#include<unistd.h>intmain(void){intfd;//创建文件,获取文件描述符fd=open("ps.out"......
  • PerfView专题 (第五篇):如何寻找 C# 托管内存泄漏
    一:背景前几篇我们聊的都是非托管内存泄漏,这一篇我们再看下如何用PerfView来排查托管内存泄漏,其实托管内存泄漏比较好排查,尤其是用WinDbg,毕竟C#是带有丰富的元数据......
  • c语言中输出字符型变量(char型)所占用的位数
     001、 #include<stdio.h>#include<limits.h>##CHAR_BIT定义了char型所占用的位数,该变量定义在limits.h头文件中intmain(void){printf("CHAR......