我有一台自制的 Linux 服务器(Ubuntu 12.04.5 LTS、Intel i5-3570K、8GB RAM),主要用作邮件和 Web 服务器。它只在控制台模式下运行(没有 GUI)。我会不时通过 SSH 连接到它,几乎从不从控制台操作它。它往往可以正常工作很多天,甚至几周,但有时会毫无预警地严重崩溃。当我说“严重崩溃”时,我的意思是 PC 突然变得完全没有响应:
- 它不留下任何日志条目
- 它不会发出“哎呀”、内核崩溃消息或核心转储
- 屏幕上不显示任何消息。
- 它不响应任何键盘或鼠标输入(NumLock 灯对该键也没有反应)
- 无法通过 SSH 访问
- 机壳的复位开关无法工作
唯一的解决办法是按住机箱电源按钮直到其关闭,然后重新启动。
当然,这说明存在“硬件问题”,但哪个组件最有可能?Memtest86+ 没有显示任何错误,因此似乎只能归咎于三大问题 - 主板、CPU 或电源。(PC 没有超频,传感器最后的消息(崩溃前)表明没有过热或风扇问题)
从统计上看,这些组件中哪一个最有可能存在问题?
我把最后一个标准加粗了,因为我觉得这似乎不寻常。通常,即使发生严重崩溃,PC 仍可以通过机箱的重置开关重新启动。这是否意味着 PSU 或主板存在问题?(按住电源开关 4-5 秒钟关闭 PC做仍然有效)
有没有办法对它们进行测试,而不必简单地一次订购一个新部件,直到我确信(经过几周没有崩溃)问题已得到解决?
感谢任何能提供帮助的人。
答案1
我有点惊讶没有人建议使用SysRq魔法钥匙。
首先,应该使用它来强制重启,而不是电源开关,因为这会让程序有机会将未保存的数据保存到磁盘;如果不这样做,重启时可能会出现相当大的问题(更不用说等待常规检查的无聊崩溃fsck
)。具体操作如下:同时按住Alt和SysRq,输入,间隔几秒钟r e i s u b(英语中著名的助记符是养大象真是无聊透顶, 我更喜欢跑腿实在太无聊了,如果可以的话,尝试想出一个更好的)。
除此之外,当系统冻结时,使用Alt++ (其中 XSysRq是X字母)允许您运行一些诊断程序:例如,X=d
显示所有当前锁,这可能有助于诊断软件问题;X=j
解冻冻结的文件系统;X=l
(l
是 ell)显示堆栈回溯;X=t
向控制台输出当前任务列表;X=w
显示被阻止的任务列表。
您可以找到更多代码在维基百科上。
虽然我不能说这将是决定性的一步(有些情况下甚至这一步也会失败),但这是调查的下一步,它将有助于指出软件或硬件问题,并限制可能的罪魁祸首的范围。
答案2
1:你的 Ubuntu 稳定吗? 您是否下载了稳定版本的 ubuntu?如果没有,请尝试降级到最新的稳定版本。
2:您是否在另一台虚拟/物理机上尝试过? 这很可能是一个脚本错误,在虚拟机(如 Virtual Box)中测试它,如果你还没有尝试过这些步骤,那么这更有可能防止任何硬崩溃,它还会为你提供一个可以调试和监控操作系统的环境
3:内存故障? 好吧,所以它不太可能是本地 SSD/HDD/SSHD,因为 Linux 操作系统已加载到 RAM 中,如果无法联系内核,它会发出警告,然后它就会崩溃。但是,如果 RAM 在哪里锁定,因为它的有故障/有缺陷操作系统将完全冻结,无法发布(甚至无法意识到)任何错误,这可能解释了没有日志的原因,然而,很有可能是其他原因
4:查看论坛 好吧,我不是最有效的Linux用户,还有很多我不知道的地方,我遇到过类似的硬件和软件问题,但我真的不知道你的自制服务器是做什么的,所以很难找出其中的缺陷,我会浏览论坛
答案3
您能做的最好的事情就是查看锁定时间附近的日志,看看是否可以将锁定与任何类型的系统事件关联起来。这是一件很难的事情,您可能无法通过这种方式找到任何可能直接导致锁定的事情。
诊断硬件问题的一些提示:
最容易消除的是固件问题/设置:
确保您的系统具有制造商提供的最新固件/BIOS 更新。
确保所有存储设备也都更新至最新固件。
尝试禁用固件/BIOS 中的任何 CPU 或其他电源管理选项。
如果您不使用虚拟化,请尝试在固件中禁用虚拟化。
即使内存测试没有显示 RAM 问题,也会导致硬死机。这可能是非常间歇性的。实际服务器具有 ECC RAM,可防止罕见/瞬时 RAM 错误导致问题,但如果这是一台非服务器 PC,则没有此功能。如果可以,请尝试更换 RAM。
墙上电源的电源问题可能会导致此类问题。如果您真的要运行家庭服务器,则应该配备备用电池,以过滤瞬时电源问题。
如果问题仍然存在,请尝试更换电源或使用其他电源。
随后,假设主板有问题并考虑更换。