我必须解决十台机器“集群”上的一个棘手问题:其中一台机器在进行硬计算时随机挂起,有时仍能 ping 通,有时则不能。
问题已在电话中向我描述,我仍然无法触摸/看到这些机器,因此我无法更精确地描述。似乎没有(真正的)键盘或显示器与它们相连,因此我对键盘指示灯或显示器上的消息一无所知。
别担心,我真正需要的是一些关于在哪里寻找问题的建议,一些关于什么可能导致内核在正常工作的机器上挂起的建议。
我也看到了这个帖子,但在不同情况下似乎有同样的需求。
我现在的想法是:
- 硬件问题(内存、CPU、风扇等)
- autofs 配置不正确
- nfs(?) 配置不正确
- 存在木马/黑客/等
- /dev/“swap”链接到 /dev/zero
- 内核内存不足(??)
- 内核有漏洞
换句话说,我试图想象会发生什么样的事件,导致内核而不是生成事件的应用程序崩溃。
以前经历过什么挂机YOU
?写给我吧!
短暂性脑缺血发作
答案1
首先,虽然 RHEL 4 本身已经相当老了,但它仍然在维护,你可以尝试用最新的补丁进行更新(参见维基信息)。
内核崩溃/挂起可能由多种原因引起。我遇到的原因主要是
内存问题:安装(例如) CD 上的 Ubuntu 版本,然后在其上启动并运行
memtest86+
,它会主动检查内存(可能需要一些时间才能发现问题)。硬件问题:导致意外中断,使系统陷入无法恢复的境地、使内核执行进入“空间”、破坏堆栈……
模块问题:不合适的模块(例如与硬件不完全匹配的模块或有缺陷的模块)具有特权访问权限,可能会挂起系统。较旧的内核尤其容易受到威胁(较新的版本可以更好地恢复有缺陷的模块问题)。
还见过神秘的(旧)系统挂起,原因是
主板 CMOS 电池没电了(换一个吧,很便宜)。
网线损坏
也许是升级到新系统的正确时机(例如,现在拥有安装有 Ubuntu 10.04.1 LTS 的服务器并没有什么问题)。
答案2
RHEL 4 机器(或任何机器)有无数种挂起方式。您需要收集更多信息。我会从挂起时的日志开始。您还可以设置 NMI 监视程序,以便在机器挂起于内核时强制机器崩溃,并设置 netconsole 以记录发生这种情况时的控制台消息。如果系统在重负载下死机,并且在内核本身没有完全挂起的情况下变得无响应,您可以设置 hangwatch 来触发各种诊断消息(转储到日志或通过 netconsole),或者甚至在达到特定负载阈值时重新启动机器。