如何在没有任何内核崩溃或日志的情况下诊断 Linux 服务器冻结

如何在没有任何内核崩溃或日志的情况下诊断 Linux 服务器冻结

过去几个月,我的 Ubuntu 服务器小集群一直崩溃。大多数情况下,当服务器崩溃时,我可以在 dmesg、syslog 或其他各种日志系统中找到一些原因证据。但是对于这个特定的冻结,任何日志中都没有发生任何事情。系统只是字面意义上的冻结,没有键盘输入,系统根本没有发出 ping 信号。它处于离线状态,但仍在消耗电量。

如果只是一台服务器,我会责怪硬件,但我们谈论的是多台服务器,多代 CPU、RAM 和主板都存在问题。

我尝试升级到各种内核(目前为 4.15),但这也未能解决问题。

我主要想寻找的是某种方法来增加内核日志记录或以其他方式从冻结的服务器获取有关它在冻结之前正在做什么的信息。

答案1

硬死机通常是由于电源管理问题造成的。请尝试:

  1. 在 BIOS 中禁用任何电源管理设置(例如:P/C 状态)或者使用“最大性能”配置文件;

  2. 在操作系统内部,使用“性能”电源调节器(即cpupower frequency-set -g performance:);

  3. 使用idle=poll启动参数的轮询空闲内核设置;

  4. intel_idle.max_cstate=0 processor.max_cstate=0使用内核启动参数禁用任何 C 状态。

为了找出锁定的原因,您应该一次应用一项更改。此外,请注意步骤 #3 和 #4将要对功耗/效率有显著影响,因此您应该仅使用建议的内核命令行进行测试/诊断。

相关内容