我的 Linux 服务器(Debian 5)停滞了,必须重新启动。
请告知需要检查哪些内容才能查明发生了什么。常见的嫌疑包括/var/log/messages
、syslog
和kern.log
。您能否提示一下,在发生故障之前平均负载飙升至 100 以上?不知道该进一步检查哪里。
答案1
您需要提供更多有关服务器配置的信息,并发布这些日志。您如何知道平均负载变高了?
“故障前平均负载飙升至 100 以上”的症状可能有很多原因,但常见的原因如下。
首先,什么是平均负载?
我建议你看一下这篇文章以获取有关该主题的更多信息:https://superuser.com/questions/23498/what-does-load-average-mean-in-unix-linux
平均负载指示当前有多少进程处于“等待”状态。非常高的负载平均表示资源耗尽,而这种资源耗尽的常见原因是等待 I/O 操作完成的时间很长(或无限长)。
什么原因造成这种情况?
- I/O 等待可能是由于 NFS 安装失败或硬盘驱动器故障。您可能已成为攻击的受害者。
- 攻击方式如下 慢蜂往往会耗尽文件句柄池,并可能挂起服务器上的 I/O 操作。
- 还要注意 fork 炸弹。如果您遭遇了 fork 炸弹,并且内存耗尽,您可能会看到有关“OOM Killer”的痕迹,这是一个内核工作程序,当其他所有程序都失败时,它会牺牲进程来为系统释放内存。在某些设置中,该 OOM Killer 可以使系统重新启动。
去哪儿看?
这实际上取决于您的系统配置和环境。你在问题中没有提供足够的细节来回答这个问题。不过这里有一些想法:
- 首先,检查所有硬盘。对它们运行完整的 SMART 测试。
- 如果您有硬件 RAID,请检查 RAID 控制器的日志。
- 如果您正在托管网络服务,请检查带宽使用历史记录和请求计数。
- 如果你有远程网络挂载(sshfs、NFS),请检查其可靠性
- 如果您在服务器上托管用户 shell,请检查其 .bash_history (这可以伪造。)
- 如果该服务器是虚拟机,则问题可能与您的服务器无关,而与您的虚拟服务提供商有关。