最近2003 Server升级到了Asp.Net 2.0,发现CPU占用总是接近100%,服务器响应严重降低。
历经一番挫折,终于搞定了问题。下面把整个过程写下来与大家分享,希望对遇到同样问题的朋友有所帮助。
开始怀疑是下载软件包的问题,.Net Framework 2(x86)是从微软网站下载的,重新检查,排除了下载软件包的问题。网上疯狂搜集资料也是不得法。无奈之下,尝试在IIS Web服务扩展里把ASP.NET v1.1.4322给禁止了,运行一段时间发现CPU占用一直稳定在50%左右,不过这也不是正常的CPU占用率(平时CPU一般在5%左右)。
今天在网上偶然看到一篇文章 解决w3wp.exe内存占用问题,作者建议“ 在IIS中对每个网站进行单独的应用程序池配置”,于是首先对几个大的站点单独配置应用程序池,发现CPU占用显著降低, 最终解决问题。
应用程序池是将一个或多个应用程序链接到一个或多个工作进程集合的配置。因为应用程序池中的应用程序与其他应用程序被工作进程边界分隔,所以某个应用程序池中的应用程序不会受到其他应用程序池中应用程序所产生的问题的影响。
历经一番挫折,终于搞定了问题。下面把整个过程写下来与大家分享,希望对遇到同样问题的朋友有所帮助。
开始怀疑是下载软件包的问题,.Net Framework 2(x86)是从微软网站下载的,重新检查,排除了下载软件包的问题。网上疯狂搜集资料也是不得法。无奈之下,尝试在IIS Web服务扩展里把ASP.NET v1.1.4322给禁止了,运行一段时间发现CPU占用一直稳定在50%左右,不过这也不是正常的CPU占用率(平时CPU一般在5%左右)。
今天在网上偶然看到一篇文章 解决w3wp.exe内存占用问题,作者建议“ 在IIS中对每个网站进行单独的应用程序池配置”,于是首先对几个大的站点单独配置应用程序池,发现CPU占用显著降低, 最终解决问题。
应用程序池是将一个或多个应用程序链接到一个或多个工作进程集合的配置。因为应用程序池中的应用程序与其他应用程序被工作进程边界分隔,所以某个应用程序池中的应用程序不会受到其他应用程序池中应用程序所产生的问题的影响。
在IIS6下,经常出现w3wp的内存占用不能及时释放,从而导致服务器响应速度很慢。
今天研究了一下,可以做以下配置:
1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。
2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。同时,设置同时运行的w3wp进程数目为1。再设置当内存或者cpu占用超过多少,就自动回收内存
一般来说,这样就可以解决了。但仍然会出现个别网站因为程序问题,不能正确释放。
那么,怎么样才能找到是哪一个网站的?
1、在任务管理器中增加显示pid字段。就可以看到占用内存或者cpu最高的进程pid
2、在命令提示符下运行iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池
3、到iis中察看该应用程序池对应的网站,就ok了