
Tengo un servidor dedicado de 32 GB de RAM sin ECC con CentOS.
Una vez al día, falla aleatoriamente sin ningún error en /var/log/kern.log, /var/log/messages, mysql, apache.
CPU/RAM/IO no son particularmente altos ni bajos.
¿Existe algún error de este tipo registrado por CentOS en algún lugar que pueda revelar de manera concluyente "ahora es el momento de pagar por ECC"?
Respuesta1
¿Qué le gustaría que registre? CentOS no puede saber que el contenido de la memoria que no es ECC se ha corrompido porque no se puede conocer; sólo puede saber que el contenido de la memoria no tiene sentido y entrar en pánico ante cualquier autoinconsistencia que encuentre. Esa inconsistencia podría haber surgido de la corrupción de la RAM, pero también podría haber surgido de un error del kernel o alguna otra causa.
La única manera de saber definitivamente que la memoria se ha corrompido es utilizar una memoria que incluya explícitamente soporte para comprobar dicha corrupción; a saber, memoria ECC.
Editar: esa es una pregunta completamente diferente a la que hiciste. Pero mi estrategia sería: ejecutar memtest86+
en el hardware, para ver si hay errores repetibles fáciles de detectar, y habilitar el syslog
ging remoto en el servidor (como cuando el kernel entra en pánico, a menudo deja de escribir en el FS pero aún puede comprimir). un mensaje de registro de la NIC), para ver qué se registró en el siguiente pánico.
Respuesta2
La memoria ECC tiene dos ventajas:
- Está registrado, lo que significa que hay un registro antes que otros componentes del chip. Se supone que esto elimina la carga eléctrica del controlador de memoria. Esto es cierto para todos los RDIMM, no solo para la RAM ECC.
- Puede detectar errores y, si no se recupera, al menos informar que sucedieron.
Teniendo esto en cuenta, en realidad es muy difícil determinar si se habría beneficiado de la memoria RAM ECC sin tenerla. Por definición, no puede registrar la falla para detectar un error y ciertamente no tiene datos sobre si el error que pudo haber ocurrido o no fue el resultado de un error en el controlador de memoria.
Dicho esto, si ejecuta memtest, determinará un par de cosas. Si no encuentra errores, necesita RAM ECC o el problema está en otra cosa (por lo que si descarta absolutamente todas las piezas de hardware y software como causa, habrá demostrado la necesidad de RAM ECC). Si encuentra errores constantes, es probable que la RAM esté defectuosa y solo necesite ser reemplazada. Si encuentra errores inconsistentes, es posible que la CPU esté defectuosa o que necesite RAM ECC. Si descubre que memtest86 falla, el DIMM de orden más bajo está defectuoso, la CPU está defectuosa o necesita RAM ECC.
De todos modos, esto es muy complicado de mostrar definitivamente. La RAM ECC es más útil en aplicaciones donde los errores invisibles en los cálculos probablemente causen problemas extremos, o en aplicaciones donde la gran cantidad de RAM combinada con otras condiciones hace que los errores sean estadísticamente probables. Sin embargo, estos criterios en sí mismos son confusos y subjetivos, por lo que en realidad no existe un criterio objetivo para esto.
Respuesta3
Si estuviera en algún lugar, probablemente iniciaría sesión en
/var/log/mcelog
(Aquí es donde ocurren los eventos críticos de la CPU en las razas RHEL)