当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪win2003中的w3wp.exe进程大量占用cpu资源的各种问题解决方法       1:使用 MicrosoftJet 数据库引擎 Web 应用程序可能停止响应负载,造成假死: 原因:发生此问题是因为 Jet 数据库引擎中存在缺陷。 Microsoft Windows Server 2003 上只会出现此问题。 在 Windows Server 2.........
    ▪认识w3wp.exe进程,从根本上解决占用资源较大问题       在windows server 2003中对于每一个web应用,iis 6.0都用一个独立的w3wp.exe的实例来运行它。w3wp.exe也称为工作进程(每一个主机头都会有一个) 直接在任务管理器中结束进程是不起作用的,结束.........
    ▪nginx下的代理服务器80端口被封的解决方案       方法如下: 首先得准备一台VPS,俺用的是国外的,,早上我已经将环境搞定了,于是迫不及待的测试了下……???啥?你吖环境都不知道配置??没关系.看哥的教程,用SSH连接上终端,挨个执行centos下的LNMP.........

[1]win2003中的w3wp.exe进程大量占用cpu资源的各种问题解决方法
    来源: 互联网  发布时间: 2013-12-24
1:使用 MicrosoftJet 数据库引擎 Web 应用程序可能停止响应负载,造成假死:
原因:发生此问题是因为 Jet 数据库引擎中存在缺陷。 Microsoft Windows Server 2003 上只会出现此问题。 在 Windows Server 2003, COM+ 更改频率 CoFreeUnusedLibraries 函数被调用。 此更改导致 Jet 驱动程序以初始化频繁。 此行为可能导致死锁条件。
Web 服务器负载时最常出现此问题。
补丁下载:
chs:WindowsServer2003-KB838306-x86-chs.exe
enu:WindowsServer2003-KB838306-x86-enu.exe
在IIS6下,经常出现w3wp.exe的内存及CPU占用不能及时释放,从而导致服务器响应速度很慢。

解决内存占用过多,可以做以下配置:
1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。
2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。再设置当内存占用超过多少(如500M),就自动回收内存。

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

根据w3wp取得是那个一个应用程序池:
1、在任务管理器中增加显示pid字段。就可以看到占用内存或者cpu最高的进程pid
2、在命令提示符下运行iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池。(iisapp实际上是存放在C:\windows\system32目录下的一个VBS脚本,全名为iisapp.vbs,如果你和我一样,也禁止了Vbs默认关联程序,那么就需要手动到该目录,先择打开方式,然后选“Microsoft (r) Windows Based Script Host”来执行,就可以得到PID与应用程序池的对应关系。)
3、到iis中察看该应用程序池对应的网站,就ok了,做出上面的内存或CPU方面的限制,或检查程序有无死循环之类的问题。

QUOTE:

环境: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是导致此次问题的罪魁祸首。

补充:
限制sql的内存。企业管理器——SQL的属性(一般是local)——“内存”标签,在这里看内存的设置,把最大值改成100M吧(这个确实有一定的作用)。只不过还是存在系统资源占用比较多的,继续寻找产生的原因。。。

    
[2]认识w3wp.exe进程,从根本上解决占用资源较大问题
    来源: 互联网  发布时间: 2013-12-24
在windows server 2003中对于每一个web应用,iis 6.0都用一个独立的w3wp.exe的实例来运行它。w3wp.exe也称为工作进程(每一个主机头都会有一个)

直接在任务管理器中结束进程是不起作用的,结束后不久它会执行启动,要想结束它可以在iis中找到相应的应用程序池停止相应的应用程序池工作。

这些都不是解决办法,它的根本问题是你的那个网站程序有问题,在找到问题以前可以先打开iis找到应用程序池先用右键属性中设置“性能”把其中的cpu设成大于60%关闭应用程序池,把关闭时间和开启时间设短一些比如10秒,这样当您的网站程序大量占用系统资源时iis自动快速回收进程并且快速启动进程,您的网站暂时还可以将就着工作。

要解决根本问题还要从程序查起,您可以在iis中的应用程序池中右键创建多个应用程序池,然后在每个主机头中的文件家选项的底部将应用程序池对应道刚才建好的应用程序池,然后一个一个关闭在任务管理器中看看是哪个程序占用的资源较大。

下面是一些网友的相关贴子也许对大家有帮助


朋友的web服务器一直运行正常,但这几天cpu占用率一直将近100%,遂去看个究竟。
服务器采用windows 2003, 网站使用asp+access数据库, 查看进程列表发现w3wp.exe 占用了70%以上的cpu,
查看web日志,站点访问量不大,查看tcp连接也不多。用net stop w3svc停掉web服务,cpu占用立即正常,net start w3svc启动web后不久现象又出来了。停止所有虚拟站点,新建一个虚拟站点发现并没有问题,怀疑是站点本身的代码问题。
检查首页代码,大致是如下结构:

粗看一下并没有问题,但就是这段代码造成了w3wp.exe占用大量cpu,难道是死循环?似乎没有理由。在循环体内加入计数,发现确实是死循环,说明rs.eof一直为false,加入如下代码:

if rs.eof = true then response.write "eof is true"
if rs.eof = false then response.write "eof is false"

发现输出竟然是eof is true eof is false, 说明无法判断rs.eof的值,为何如此百思不得其解。检查数据库,发现库中并没有mytable表, 如果该表不存在,rs.open "select * from mytable", conn 就会出错,为何没有出错,很有可能捕获的异常被忽略了。
检查包含文件conn.asp, 发现了异常处理代码:

on error resume next


原来问题在此。

on error resume next忽略了查询表时的失败以及后续的错误,造成进入死循环。
那为何网站本来运行正常,现在却找不到mytable表了呢?仔细检查网站才发现“有‘客'自远方来”,上传了后门工具、删除了多张数据表,害我忙活了一天。

更多的内容大家还可以到:http://www.microsoft.com/china/technet/security/guidance/secmod93.mspx

查找更详细的安全设置

windows2003  iis6.0假死问题解决

这几天服务器总是运行缓慢,远程登录后发现一个w3wp.exe的进程占用了100%  cpu。

问题的原因最终找到两个:

1.采用的jet  数据库连接方式存在问题:http://support.microsoft.com/?id=838306

补丁下载:
chs:windowsserver2003-kb838306-x86-chs.exe
enu:windowsserver2003-kb838306-x86-enu.exe
2.将access数据库扩展名改为asp

下面是我的差错过程和解决方案:

搜索一下发现类似问题还真不少,那个w3wp的进程是iis6.0的应用程序池,网上的说法有两种,一是因为asp或者asp.net代码中含有死循环引起的。但是服务器上这么多网站,谁知道那个网站出了问题。二是由于上面的jet连接数据库方式的bug引起的,下载838306的补丁,或者升级到sp1可以解决这个问题,但是打了这个补丁后,有些网站的问题依然存在。


又去搜索,有人说将每个网站建立独立的应用程序池,应用程序池的安全性帐户设为本地服务即可。方法如下:

首先新建应用程序池:
然后将网站的应用程序池指向刚才建立的应用程序池:
在建立完所有应用程序池后,统一修改应用程序池的属性:
将应用程序池安全帐户指定为本地服务:
设置完这些之后,问题依然存在,这样一个网站出现问题,不致影响其他网站,但是这个网站仍然占用大量资源,导致其它网站响应缓慢。不过在任务管理器中出现了每个应用程序池的进程,因此可以找到具体出问题的进程了。

下面是寻找出错网站的过程:要找到这个网站,必须把有问题的进程跟该网站的应用程序池联系起来。首先设置任务管理器的查看方式,加入pid的显示:

然后再命令行运行iisapp  -a,可以看到pid跟应用程序池的对应关系:
再去iis中看该应用程序池对应的网站,有问题的网站就找到了,剩下的就是这个网站代码中的问题了。

在某位网站管理员的纠缠不休下,我终于无法忍受,帮他找错误-  -  无数次配置iis,网站程序也换了,该升级的也升级了,问题还是存在,黔驴技穷,把网站下载到本地看看到底怎么回事。当我试图打开他的数据库的时候,问题出现了:

他的数据库是.asp的扩展名,要先修改为.mdb才能打开,但是当我点击要改名字的时候,我的电脑没有响应了~!看来问题在这个数据库了。

用命令行rename之后,打开数据库,修复,似乎没有任何问题,但是再改为.asp时,又出现了刚才的问题。哈~原来是.asp的扩展名在作怪。

但是我试着将其他的数据库改为.asp,没有问题。根本原因不得而知,望知情者告知。

最后,在iis中随便添加了一个isapi对应到mdb,造成mdb无法执行,防止下载,将所有的.asp的数据库改回.mdb,问题解决。

1.w3wp.exe,应用程序,应用程序池之间的关系

一个应用程序池可以包含多个应用程序,一个应用程序池创建一个w3wp.exe进程.那么我们就不能简单的说一个应用程序对应一个w3wp.exe进程了!

其实是多个应用程序对应一个w3wp.exe进程的.

2.如何启动和关闭w3wp.exe这个进程

w3wp.exe这个进程将在你访问www应用程序的时候启动.有人就会这么问了:"我启动了一个web应用程序,发现系统自动创建了一个w3wp.exe进程。但我关闭这个web应用程序后,发现这个刚创建的w3wp.exe进程还在,请问如何关闭该进程。"

这个进程不会在你关闭了这个程序以后,就马上关闭的.那是因为http是无连接的访问,当你关闭了web网页,不会返回相应的关闭信息,所以w3wp.exe这个进程不会因为你关闭了web应用程序尔关闭.

那么如何关闭这个进程呢?在应用程序池的配置中,"空闲超时"中设定合适的时间,系统默认的是20分钟.设定好指定的时间,那么在这个时间范围内没有在访问应用程序,那么系统会自动的关闭w3wp.exe这个进程的.而不需要我们人为的干预的.

要是你有这个精力的话,也可以在windows任务管理器里面,结束这个进程的生命(^_^)!

3.如何让w3wp.exe进程长时间的运行.

w3wp.exe这个进程的默认生命是1740分钟,但依然是在这种默认的自然规律下,w3wp.exe将在自己失业20分钟后,被系统直接枪杀.

这样就可以看出,要想让w3wp.exe长时间的生存,那我们可以通过”空闲超时”不作处理来达到我们的目的.

这样可是缺点多多,但是为了达到个人的私欲,这又算什么.本来也不是什么正式的项目.

4.如何降低w3wp.exe占用的内存和cpu

结合网上的诸多建议,主要的解决办法是:

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

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


    
[3]nginx下的代理服务器80端口被封的解决方案
    来源: 互联网  发布时间: 2013-12-24
方法如下:

首先得准备一台VPS,俺用的是国外的,,早上我已经将环境搞定了,于是迫不及待的测试了下……???啥?你吖环境都不知道配置??没关系.看哥的教程,用SSH连接上终端,挨个执行centos下的LNMP环境一键安装这篇文章里面的内容吧,好了.这下会了吧.其他的….命令那些的看看Centos下一些基本要用到的命令,也就差不多了…..好了.这些都了解的差不多了吧…


然后,我们不是80被封了嘛.咱们给网站个81端口,我说的是IIS,那啥的nginx和apache我还真不知道如何给.总之要让网站能访问,不管什么方式…..然后再来编辑nginx.conf.在最后一个}前面加上以下内容….不懂得添加站点的看上面的文章

代码如下:

server {
listen 80;
server_name jb51.cn www.jb51.cn;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

access_log /home/www/logs/jb51.cn_access.log;

location /robots.txt {

root /home/www/www.jb51.cn;

}

location / {

proxy_pass http://IP或者其他域名:82;

}
}

这样就好了,简单吧….

    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3