快速解决IIS5故障一例

随着网络信息化的不断发展,许多企业都建立了自己的网络信息平台,对内部和外部提供网页服务。一方面树立了企业形象,另一方面为公司内部提供必要的应用服务。一般建立网页服务都采取win2000 server+IIS5的方法,毕竟这个黄金组合已经经历了很长时间的考验,在配置上非常方便,在安全上也有一定的保证。

  使用上面提到的黄金组合可以方便快捷的建立网页服务,但根据笔者多年工作经验IIS经常会出现一些莫名其妙的问题,特别是和ASP等技术结合时,问题出现后将直接导致主页无法正常浏览,而排查起故障原因又非常复杂,重新启动计算机后一切恢复正常。以前我们都是在出现这种故障时直接通过远程桌面连接到服务器上重新启动该计算机,不过由于一台服务器可能担负着很多工作,而且重新启动计算机的时候也会非常缓慢,这样就造成了网页发布瘫痪时间的延长以及其他服务受牵连影响。有没有一种方法能够在不重新启动计算机的情况下实现IIS故障的排除呢?

  笔者最近发现了一个结束DLLHOST进程的方法来解决这个疑难问题。该方法只对IIS5有效,对于WIN2003下默认是IIS6则此法没有任何作用。


理论篇:

  IIS5中使用两个独立的帐号运行WEB页,当匿名验证的时候,IIS使用IUSR_MACHINE帐号查看这些页面,而IIS的启动则需要另一个帐号IWAM_MACHINE了,IIS通过该帐号启动DLLHOST.EXE进程,从而达到启用网页浏览的目的。

  本次采用的方法就是找到由IWAM_MACHINE启动的DLLHOST.exe进程,并将其关闭来实现快速重新启动IIS的功能。当然关闭进程后10秒左右系统会自动再次启动DLLHOST.EXE进程。

实战篇:

  当用户报告IIS发布的主页不能正常浏览时我们应该采用如下步骤快速解决。

  在服务器上打开任务管理器,方法是按ctrl+shift+esc。如果任务管理器没有显示后台用户的话我们还需要在任务管理
器下方的“显示所有用户的进程”前打上对勾,这样系统就会把后台用户占用的进程显示出来。
  如果任务管理器没有显示进程是由哪个用户调用的话还需要我们选择菜单上的“查看->选择列”。这时候会弹出选择列窗口,我们将“用户名”勾选上,这样就可以在任务管理器中显示某进程是由谁调用的了。

  我们在任务管理器中找到DLLHOST.EXE进程,如果调用该进程的是iwam_machine的话,他就是我们所要找的IIS启用的进程了。只要在该进程上点鼠标右键,选择“结束进程”即可。由于笔者计算机的名称为wwwserver,所以调用DLLHOST的用户名为iwam_wwwserver。结束进程时还会出现“警告:终止进程会导致不希望发生的结果,包括数据丢失和系统不稳定确实想终止该进程吗?”的提示,我们不用理会直接确定。
 
  在我们将DLLHOST进程关闭后再访问IIS发布的网页就会显示The remote procedure call failed and did not execute.表明服务器上的进程已经被关闭了,在10秒之后服务器会自动重新加载DLLHOST.EXE进程,这样我们就由可以访问久违的网页了。

总结:

  使用进程关闭法进行IIS5故障的排除,整个排查过程只需要几十秒,不仅节约了重启计算机所花的大量时间,还不影响其他相关服务的正常运行。
posted @ 2006-05-26 08:35  斌哥  阅读(464)  评论(0编辑  收藏  举报