简介
几天以来,我的物理服务器每 2 或 3 天就会冻结一次。我已经更换了所有硬件,包括驱动器,并全新安装了 Ubuntu。
详细信息和发现
搜索日志文件时到目前为止还没有找到任何线索:
- 每个系统日志或内核日志文件都会
^@^@^@^@^@^@^@^@^@^@^@^@
在发生冻结时显示。在此之前,冻结前至少 15 分钟内没有任何可疑行为。 - 可以找到上次重启后的日志这里。由于我经营 UFW,所以有点混乱。冻结发生在约 09:45h。
- 我已经监控了服务器。在发生冻结之前,CPU、RAM、DiskIO、磁盘空间和网络接口上的流量均未增加。CPU、RAM 和磁盘空间也未超过限制。
- 一旦服务器冻结,我就无法在控制台上执行任何操作。我需要重新启动服务器(硬重置)才能让它恢复运行几天。
我在服务器上运行的内容:
- nginx
- php-fpm
- Laravel 8
- 联邦快递
- 失败2ban
- MySQL 8
我已经采取的行动,在类似的帖子中发现:
- 调整最小可用 RAM:
sysctl -w vm.min_free_kbytes=235929
sysctl -w vm.swappiness=5
由于大多数日志都显示了一些随机迹象,因此我非常感谢任何有关下一步该做什么的帮助。我不知道我还能检查什么。感谢提供的任何提示和帮助!
更新
在让主机提供商查看服务器后,崩溃突然停止了。尽管他们声称没有发现任何问题。
答案1
- 尝试不同的内核版本(其他 Ubuntu 版本的内核,例如 18.04、22.04、主线内核版本),看看问题是否仍然存在。如果您的服务器在使用其他内核版本时没有崩溃,那么您遇到的是一个影响 20.04 的内核错误。
- 似乎即使内核察觉到故障,它也无法将问题写入系统日志。检查控制台上是否出现内核恐慌,但如果屏幕关闭,则无法在内核崩溃的情况下将其重新打开。因此,您应该禁用由于不活动而关闭的屏幕。您还可以尝试使用 crashkernel (
kdump
) 来获取有关崩溃的更多信息;或者您可以将控制台输出重定向到串行端口并使用外部设备记录输出,但我从未真正尝试过。 - 您还可以同时测试不同的 Ubuntu 版本,或者不同的 Linux 发行版,但通常没有必要(崩溃通常是由内核及其驱动程序引起的,围绕它构建的发行版很少会造成影响)。您甚至可以尝试不同的操作系统,如 FreeBSD 或 Windows,以查看计算机是否继续冻结 - 如果冻结也发生在其他操作系统上,则肯定存在硬件问题。
- 运行
memtest
以检测可能存在故障的 RAM 模块。Memtest 需要完全控制计算机(您必须启动它而不是操作系统),因此您的服务器在测试运行时无法运行。 - 不幸的是,当问题不明显时,硬件故障可能非常隐蔽。我不知道你更换了什么,但你的主板、CPU 或 PSU 甚至可能出现故障。有一次我的电脑不断随机关闭。起初我不知道原因是什么,但后来发现我的电源线有接触问题——更换它解决了这个问题。