我有一个带有 CentOS 的 32GB 非 ECC RAM 专用服务器。
一天一次,它随机崩溃,在 /var/log/kern.log、/var/log/messages、mysql、apache 中没有任何错误。
CPU/RAM/IO 不是特别高也不是特别低。
CentOS 是否在某处记录了任何此类错误,可以最终揭示“现在是时候为 ECC 付费了”?
我有一个带有 CentOS 的 32GB 非 ECC RAM 专用服务器。
一天一次,它随机崩溃,在 /var/log/kern.log、/var/log/messages、mysql、apache 中没有任何错误。
CPU/RAM/IO 不是特别高也不是特别低。
CentOS 是否在某处记录了任何此类错误,可以最终揭示“现在是时候为 ECC 付费了”?
您希望它记录什么?CentOS 无法知道非 ECC 内存的内容已损坏,因为它不可知;它只能知道记忆中的内容毫无意义,并以它发现的任何自相矛盾为由恐慌。这种不一致可能是由 RAM 损坏引起的,但也可能是由内核错误或其他原因引起的。
确定内存已损坏的唯一方法是使用明确支持检查此类损坏的内存。也就是说,ECC 内存。
编辑:这与您提出的问题完全不同。但我的策略是:
memtest86+
在硬件上运行,看看是否有任何容易捕获的可重复错误,并syslog
在服务器上启用远程 ging(当内核崩溃时,它通常会停止写入 FS 但仍然可以挤压NIC 的日志消息),以查看下一次恐慌中记录的内容。ECC 内存有两个优点:
鉴于此,实际上很难确定您是否会在没有 ECC ram 的情况下从 ECC ram 中受益。根据定义,您无法记录检测错误的失败,并且您当然没有关于可能发生或可能未发生的错误是否是内存控制器混乱的结果的数据。
也就是说,如果您运行 memtest,您将确定几件事。如果您没有发现任何错误,要么您需要 ECC RAM,要么问题出在其他问题上(因此,如果您绝对排除所有硬件和软件的原因,则表明您需要 ECC RAM)。如果您发现一致的错误,则可能是 RAM 坏了,只需要更换。如果您发现不一致的错误,CPU 可能坏了,或者您可能需要 ECC RAM。如果发现memtest86崩溃,要么是最低阶的DIMM坏,要么是CPU坏,要么是需要ECC RAM。
无论如何,这很难确定。ECC RAM 在计算中的不可见错误可能导致极端问题的应用程序中,或者在 RAM 的绝对数量与其他条件相结合的应用程序中使统计上可能出现错误的应用程序中最有用。然而,这些标准本身是模糊和主观的,因此没有真正的客观标准。
如果在任何地方,它可能会登录到
(这是 RHEL 孕育的关键 CPU 事件发生的地方)