总结
- 当日志没有显示任何内容时,如何真正调查系统崩溃?
- 其次,我该如何为将来的崩溃做准备?是否可以进行更积极/更准确的记录?以防系统崩溃或冻结,甚至没有时间记录。
几周前,我从供应商那里购买了 3 台 VPS 机器(KVM),其中 2 台在一周后崩溃了(随机/不同时间)。它们都有 512MB 内存(带有 512mb 交换空间)。
其中一个实际上已关闭,并且在提供商的管理面板中带有“离线”标签,另一个则有点冻结,面板显示“在线”,但我无法 ssh 或通过 Web 控制台访问它。
它们都没有运行任何 CPU/内存密集型任务。其中一个只是一台 openvpn 服务器(有 2-3 个用户),另一个只是为静态站点提供服务的 nginx+php。它们两个都始终有 200-300 可用内存,并且 CPU 使用率低于 10%。
我安装了 Netdata 监控。所以我几乎了解了所有事情的历史记录。我查看了崩溃前的每一张图表和图形。CPU/内存/磁盘/网络/进程/防火墙使用率没有出现峰值或突然增加。
我查看了 下的每个日志文件/var/logs/
。我逐行阅读它们(在崩溃发生之前)。我还使用了journalctl
。没有错误,没有警告,没有内存不足,没有进程终止,只有正常事件。
两台崩溃的服务器都有syslog
如下内容:
正如您所看到的,ufw 在崩溃前只是阻止了随机垃圾邮件发送者,然后没有日志。此外,您看到的启动20:41:02
是崩溃发生后我们进行的硬/强制重启,只是为了让系统恢复在线。
当我询问提供商时,他们说他们那边一切正常,而我的服务器崩溃的原因是 512MB RAM 太低,所以我必须升级。
另外,我在网上偶然读到两件事,我想在这里问问它们是否是真实存在的。
- “微 RAM 峰值,例如将 RAM 表旋转到磁盘等”
journal_data_writeback
如果启用该参数,系统可能会在崩溃时错过将日志写入磁盘。
答案1
在与吉韦尔克在评论中,我意识到我实际上必须有一个名为的包linux-crashdump
。但由于服务器是使用最小的 Ubuntu 模板安装的,它没有预装此包,因此当崩溃发生时没有记录任何内容。这就是我找不到任何东西的原因。
对于那些正在调查崩溃原因并想知道为什么没有日志文件的人来说/var/crash
,请确保您安装了linux-crashdump
,这样希望下次您可以看到一些东西;)