在过去的 4 天中,由于服务器无法连接到数据库,在夜间的某个时间点,现在有两次网站宕机。此时,其他一切仍在运行(apache 等),只是数据库已死。
当我使用 root 登录 ssh 进行调查时,我在所有地方都具有只读权限,这就是我怀疑 mysql 服务器死机的原因。
我检查了 mysql 日志、系统日志,基本上是我能找到的每个日志文件,当问题开始时(甚至一整天),没有任何迹象表明出现错误。这就像一个开关刚刚翻转,然后我重新启动系统,一切都很好......直到几天后?
上次发生这种情况时有 2G 的免费内存,第一次有 1.5G 的免费内存。最少的 CPU 使用率 (< 30%)。
有任何想法吗?
磁盘错误是“我在任何地方都有只读权限”情况的可能原因之一。某些类型的硬件或内核级磁盘故障可能导致文件系统不一致和损坏,因此内核在检测到此类故障时会保护性地强制文件系统进入“只读”模式。如果包含您的根文件系统的磁盘出现故障,则任何尝试写入磁盘的内容都会开始出现权限错误。不需要写入磁盘的程序(如 Apache 或 SSHd)可能会继续正常工作。
下次发生数据库故障时,请在重新启动之前检查内核日志消息缓冲区是否有任何磁盘错误迹象。您可能必须使用“dmesg”命令,因为如果您的“/var/log”目录是根文件系统的一部分,系统日志守护程序将无法将错误消息写入“/var/log” /messages 文件在磁盘上。此外,内核日志缓冲区的内容会在您重新启动时丢失,因此您可能希望使用 'ssh' 或 'scp' 将该数据复制到其他地方。
我有同样的问题。看起来文件系统被无缘无故地设置为只读,(显然)日志文件中没有任何内容。
我们的“我们不支持 linux”硬件供应商花了几个月的时间才解决了这个问题。
我最终在 RAID 控制器上发现了一个固件错误。当它遇到 bug 并且 RAID 顶部的 ext3 文件系统被设置为仅由内核读取时,它会降低阵列的性能。固件升级修复了该错误,服务器从每隔几天就会出现故障变成坚如磐石。
附带说明:如果您正在运行 MegaRAID 卡,请安装 MegaCli 软件包并使用它来检查事件日志。
我发现这个文档非常有用。