
У меня есть выделенный сервер с CentOS и объемом 32 ГБ не-ECC RAM.
Один раз в день он случайно вылетает без каких-либо ошибок в /var/log/kern.log, /var/log/messages, mysql, apache.
CPU/RAM/IO не особенно высокие и не низкие.
Есть ли где-нибудь подобная ошибка, зарегистрированная CentOS, которая может окончательно подтвердить, что «пришло время платить за ECC»?
решение1
Что вы хотите, чтобы он зарегистрировал? CentOS не может знать, что содержимое не-ECC памяти повреждено, потому что это неизвестно; он может только знать, что содержимое памяти не имеет смысла, и паниковать на основании какой-либо обнаруженной им внутренней несогласованности. Эта несогласованность могла возникнуть из-за повреждения RAM, но она также могла возникнуть из-за ошибки ядра или какой-то другой причины.
Единственный способ точно узнать, повреждена ли память, — использовать память, которая явно поддерживает проверку на наличие таких повреждений, а именно память ECC.
Редактировать: это совсем другой вопрос, нежели тот, который вы задали. Но моя стратегия была бы такой: запустить memtest86+
на оборудовании, чтобы увидеть, есть ли какие-либо легко обнаруживаемые повторяющиеся ошибки, и включить удаленный syslog
ging на сервере (когда ядро паникует, оно часто прекращает запись в FS, но все еще может выжать сообщение журнала из NIC), чтобы увидеть, что записывается в журнал при следующей панике.
решение2
Память ECC имеет два преимущества:
- Он зарегистрирован, то есть регистр находится перед другими компонентами на чипе. Это должно снять электрическую нагрузку с контроллера памяти. Это справедливо для всех RDIMM, а не только для ECC RAM.
- Он может обнаруживать ошибки и, если не может их исправить, по крайней мере сообщать об их возникновении.
Учитывая это, на самом деле очень сложно определить, получили бы вы пользу от ECC RAM без ECC RAM. По определению вы не можете зарегистрировать сбой для обнаружения ошибки, и у вас, конечно, нет данных о том, была ли ошибка, которая могла или не могла произойти, результатом сбоя контроллера памяти.
Тем не менее, если вы запустите memtest, вы определите пару вещей. Если вы не найдете ошибок, либо вам нужна ECC RAM, либо проблема в чем-то другом (поэтому, если вы исключите абсолютно все части оборудования и программного обеспечения как причину, вы указали на необходимость ECC RAM). Если вы найдете постоянные ошибки, скорее всего, RAM неисправна и ее просто нужно заменить. Если вы найдете непостоянные ошибки, возможно, неисправен ЦП, или вам может понадобиться ECC RAM. Если вы обнаружите, что memtest86 дает сбой, либо неисправен модуль DIMM низшего порядка, либо неисправен ЦП, либо вам нужна ECC RAM.
Несмотря на это, это очень сложно определенно показать. ECC RAM наиболее полезна в приложениях, где невидимые ошибки в вычислениях, вероятно, вызовут экстремальные проблемы, или в приложениях, где огромное количество RAM в сочетании с другими условиями делает ошибки статистически вероятными. Однако сами эти критерии нечеткие и субъективные, поэтому следует, что на самом деле объективного критерия для этого не существует.
решение3
Если где-то, то, вероятно, он будет зарегистрирован в
/var/log/mcelog
(здесь происходят критические события ЦП на RHEL-выводах)