服务器死机怎么办?教你排除故障


本文介绍了你的整台服务器死机后,该怎样排除故障。

我们大多数人都遇到过这种情况:服务器毫无反应,结果我们无法访问任务管理器,甚至无法访问服务器上的网络共享区。当然,不用说,出问题的似乎总是任务关键型服务器。这意味着,负责服务器的IT管理员难免会惊慌失措。

处理服务器死机时,区别所谓的硬死机(call hang)与软死机(soft hang)显得很重要。这常常可以帮助我们根据在服务器上能执行什么操作、不能执行什么操作,至少能够诊断基本问题。比如说,如果我们无法ping测试服务器,无法通过键盘切换数字锁定键(NumLock)或大写锁定键(Caps Lock)功能,或者鼠标光标没有任何反应, 那么我们极有可能遇到了硬死机。这些问题一般与硬件有关(可能与驱动程序有关),但是很少与Windows操作系统的配置问题或内存泄漏有关。遇到硬死机时,系统死机出现在内核的很低层面,不再处理线程。如果是硬死机,第一步就是联系硬件厂商,对系统进行一番诊断。除非你有具体的理由怀疑问题出在某个硬件上(比如说最近安装的内存等),否则不建议你随便取出或更换硬件。

现在再来说说软死机;当服务器处于软死机状态下,它基本上没有反应,但是内核在很低的层面仍在工作——比如说,ping测试或切换数字锁定键一切正常。在软死机状态下,你可能无法在本地或通过终端服务(Terminal Services)登录到机器上,或者可能会遇到桌面一片空白,不过网络和打印机共享区仍可以访问。对于内存耗尽或进程死锁期间我们看到的那种类型的症状而言,这个现象比较常见。

我们看到的一种通常的死机问题是由分页或非分页池内存耗尽引起的。这些资源耗尽时,你会在系统事件日志(System Event Log)中看到类似下列事件的事件: 


 正如你所见,2019错误表明非分页池内存已耗尽;2020错误表明分页池内存已耗尽。如果你在死机之前看到日志中有任何这样的事件,解决了耗尽问题很可能连带解决了死机问题。我们的Platforms CPR小组去年发表了一篇博文(http://blogs.msdn.com/b/ntdebugging/archive/2006/12/18/understanding-pool-consumption-and-event-id_3a00_--2020-or-2019.aspx),介绍了如何为2019问题和2020问题排除故障,所以我们在这里不作赘述。

查明根源更难一点的问题是系统页表项(PTE)耗尽引起的死机。我们在之前关于3GB切换(/3GB switch)的一篇文章中简要地介绍了系统PTE。PTE是用来跟踪内存中页面的结构,好比图书索引告诉你图书内容在哪一页上。PTE告诉系统数据驻留在内存的哪一个物理页面上。机器从固定数量的PTE开始——系统中的内存越多,需要越多的PTE指向内存页面。如果系统耗尽了可用的页面表项,它再也无法分配内存,因而导致系统死机或毫无反应。