更多的内容大家还可以到:
查找更详细的安全设置
windows2003 iis6.0假死问题解决
这几天服务器总是运行缓慢,远程登录后发现一个w3wp.exe的进程占用了100% cpu。
问题的原因最终找到两个:
1.采用的jet 数据库连接方式存在问题:?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.合理的配置你的应用程序池;
新闻热点
疑难解答
图片精选