注册 | 登陆
您的位置:阿里西西 > 编程技术 > 服务器教程 > 详细内容

常见windows2003服务器上IIS占用CPU资源100%的解决办

  稿源:本站整理   2018-09-06   点击:   撤稿纠错
机器正在调试或允许IIS时,被异常中断服务(比如停电),然后再次IIS运行页面时,CPU资源占用100%,即使重新启动也无效。

下面是常见windows2003服务器上IIS占用CPU资源100%的解决办法的相关内容,文章教程主要讲述与windows2003 服务器 IIS 占用 CPU 资源 相关的一些技术与知识,更多的内容欢迎大家访问http://www.alixixi.com,获取更多最新教程,下面是教程讲解:

以下是方案1:
现象:机器正在调试或允许IIS时,被异常中断服务(比如停电),然后再次IIS运行页面时,CPU资源占用100%,即使重新启动也无效。
原因:发生中断时,IIS会写异常日志,但是此时写入了乱码,造成IIS一直写日志的死循环,耗尽了系统资源。找到系统路径\System32\Logfiles\W3SVC1 下当天的错误日志文件,即可看到以上内容。
解决:删除 系统路径\System32\Logfiles\W3SVC1 下当天的错误日志文件,如:ex060904.log,然后重新启动IIS即可。
以下是方案2:
环境:win2003server+IIs+ASP+MSSQL
现象:每隔一段时间(不定,有时几分钟,有时半小时)出现一次网站打开非常缓慢,甚至有时会出现超时打不开站点,此时查看服务器端的进程,CPU占用率达到100%,其中w3wp占用70~80%,SQL占用20~30%。所有服务器端的操作也变得缓慢
初期解决方法:每次现象出现时,立即登录服务器直接结束w3wp进程或重启IIS服务,平均每天约十次操作,由于服务器存放于远程机房,所有操作都是远程控制进行,有时会因此出现远程无法连接登录的情况,只能通过电话通知机房管理人员重启服务器解决,此过程导致用户抱怨不断
经过网上查阅资料,发现此类现象多数由于网页代码不合理所致,以下情况会导致此类现象发生: 
1、代码中多处使用application、seesion等服务器缓存,导致服务器资料过度占用;
2、代码有不合理语法,死循环等;
3、数据库损坏,尤其是ACCESS数据库; 
4、装过多第三方软件或插件,与IIS或网页功能代码冲突。 
第一阶段排查:根据查阅到的参考资料逐项分析
1、服务器上所有站点代码均为公司设计人员自行编写,可证实并无过多调用服务器缓存语法(排除)
2、代码是否存在不合理语法(不确定)
3、根据情况来看,IIS进程占用率升高时,SQL占用率同时升高,应为SQL数据库的站点,根据现象判断,库或表应该正常,估计是数据方面可能有误;(不确定) 
4、服务器端除了基本的系统服务,防杀毒及网站运作必备服务之外,并无多余第三方软件,机率不大(排除)。

经过以上分析判断,将不确定项连起来得出的结论是:某个采用了SQL数据库的网站网页代码存在不合理语法,导致IIS和SQL进程CPU占用率过高。

第二阶段排查:
确定范围,接着继续把范围缩小。
由于服务器上采用SQL数据库的站点并不多,便于建立独立进程ID来观察,将所有采用SQL数据库的站点在IIS管理器中分别建立独立的应用程序池,然后通过CMD界面输入:iisapp -a 命今查看并记录下各IIS池的进程ID号,通过多次现象重现时的观察,有个IIS进程ID是导致此次问题的罪魁祸首。 
以下是方案3:
在IIS6下,经常出现w3wp.exe的内存及CPU占用不能及时释放,从而导致服务器响应速度很慢。 
 
解决内存占用过多,可以做以下配置: 
1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。
2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。再设置当内存占用超过多少(如500M),就自动回收内存。

解决CPU占用过多:
1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。
2、设置应用程序池的CPU监视,不超过25%(服务器为4CPU),每分钟刷新,超过限制时关闭。 

根据w3wp取得是那个一个应用程序池:  
1、在任务管理器中增加显示pid字段。就可以看到占用内存或者cpu最高的进程  
2、在命令提示符下运行iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池。(iisapp实际上是存放在C:\windows\system32目录下的一个VBS脚本,全名为iisapp.vbs,如果你和我一样,也禁止了Vbs默认关联程序,那么就需要手动到该目录,先择打开方式,然后选“Microsoft (r) Windows Based Script Host”来执行,就可以得到PID与应用程序池的对应关系。)
3、到iis中察看该应用程序池对应的网站,就ok了,做出上面的内存或CPU方面的限制,或检查程序有无死循环之类的问题。
本页网址:http://www.alixixi.com/biancheng/a/2018090655634.shtml,如果对您有帮助欢迎收藏或转载网址,欢迎再次访问http://www.alixixi.com
更多关于 windows2003 服务器 IIS 占用 CPU 资源 的文章
相关阅读
  • 服务器教程2018-09-07 IIS7.5打开启用GZip压缩功能的设置教程方法
  • 服务器教程2007-03-11 IIS服务器常见错误解析及排错指南、错误代码

相关排行总榜

ASP教程

PHP教程

.NET教程

ASP采集功能WinHttp.WinHttpRequest.5.1的
AspJpeg图片处理组件属性的详细中文使用说
通过ASP生成html纯静态页面的简单示例
ASP开发中一个把GB2312转UTF-8编码的函数
推荐几个ASP开发中常用的fso操作文件图片
ASP读取操作生成excel文件的实例代码教程
使用ASP进行网站开发防范ASP木马的10条建
通过ASP调用MSSQL数据库视图和存储过程的
通过aspupload上传组件实现的ASP实现远程
ASP调用MSSQL存储过程进行分页的两种方式
PHP解决HTTP和HTTPS跨域共享session的方法
php程序判断来访客户端是手机端还是电脑P
用PHP来获取当前页面所有url参数信息的教
配置好环境后,进行php代码调试的方法总结
教您使用php代码实现上传图片或文件到服务
PHP开发中推荐十款最出色的安全开发工具库
PHP基础学习之数组介绍
浅谈JSP与ASP.PHP的各种平台应用比较
php制作一个万年历查询的实例代码教程
制作简单安全的php验证码类代码实例
ASP.NET环境配置中几种身份验证方式及权限
记录一次对ASP.NET网站漏洞的入侵和防范教
Asp.net在mvc环境下实现上传头像加剪裁功
对 ASP.NET 异步编程的一点理解与分析
ASP.NET读取与操作Session的代码案例教程
ASP.NET将大文件数据分成较小的部分进行分
讲解.Net组件程序设计之异步调用
AS脚本与Asp.net通过UrlRequest进行前端交
一组常用的.NET命名空间中文解释
asp.net解决url地址栏传递中文参数出现乱