服务器sel日志结合mcelog分析故障主要针对CPU以及内存
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了服务器sel日志结合mcelog分析故障主要针对CPU以及内存相关的知识,希望对你有一定的参考价值。
两个CPU平台介绍:Grantley 以及 Purley
建议装最新的mce log工具到系统下, mcelog -help查看支持的平台
两个关键要素:
1.CPU位置和BANK位置
可以使用命令:cat /proc/cpuinfo | grep -E "processor|^physical"
可以看到CPU ID属于哪个物理CPU
2.BANK位置的确定:
Grantley :bank7-bank16代表内存,其中7-8也不排除CPU
bank9-bank16 可以确定到chinel
bank9-12 cpu0 channelA-D
bank13-16 CPU1 channel A-D
Purley : 路径 CPU-CHA-IMC-channel 在msr地址表中找相关的对应module
bank7-11 : 为channel的上一级控制器,可能跟CPU有关不排除内存
bank13-18: DIMM channelA-F
sel list日志定位内存:16进制
0x04 0x0c(信号类型) 0xe2(信号编号) 0x6f 0xa0 0x50(故障位置) 0x80 三点确认内存故障
sel list PCIE故障诊断:
0x04 0x13(信号类型) 0x7c(信号编号) 0x6f 0x82 0x00(故障位置) 0x80 三点确认pcie故障 前两点看出他属于什么设备,这是固定的
16进制怎么算:最后6-7位 0x82(直接取0x后面的数值82) 0x00(换成8位的2进制 前5后3)
00000 000 即得 82:00:0 在日志pciinfo.log中找,或者命令lspci -vvv | grep-A 30 82:00:0
例:0x80 0x18 : 0x18八位2进制:00011(在换成16进制3) 000 (再换成16进制0) 得到80:03:0
CPU故障:
0x04 0x07(信号类型) 0x7c/7d(信号编号) 0x6f 0xa0 0xA2/A3(故障说明) 0x00(CPU槽位号 CPU0) # processor 四点确认CPU故障
线上服务mcelog负载异常分析处理流程
一、问题概述:
Nginx服务器,HP,有冗余,其中一台服务器mcelog负载比较高,日志秒级别,已经影响了此服务器业务。
#注意看此信息是不断循环,注意看
Transaction:Memory scrubbing error MemCtrl:Corrected patrol scrub error Erroroverflow Corrected error
#注意看其它信息
CPU16 BANK 9 MCE11
337335 MCi_MISCregister valid 337336 MCi_ADDRregister valid 337337 MCA:MEMORY CONTROLLER MS_CHANNEL1_ERR 337338 Transaction:Memory scrubbing error 337339 MemCtrl:Corrected patrol scrub error 337340 337341 STATUScc0048c0000800c1 MCGSTATUS 0 337342 MCGCAP1000812 APICID 8 SOCKETID 0 337343 CPUIDVendor Intel Family 6 Model 45 337344 Hardwareevent. This is not a software error. 337345 MCE10 337346 CPU16 BANK 9 337347 MISC90011000010008c ADDR 15e0e2000 337348 TIME1495308194 Sun May 21 03:23:14 2017 337349 MCGstatus: 337350 MCistatus: 337351 Erroroverflow 337352 Correctederror 337353 MCi_MISCregister valid 337354 MCi_ADDRregister valid 337355 MCA:MEMORY CONTROLLER MS_CHANNEL1_ERR 337356 Transaction:Memory scrubbing error 337357 MemCtrl:Corrected patrol scrub error 337358 337359 STATUScc0003c0000800c1 MCGSTATUS 0 337360 MCGCAP1000812 APICID 9 SOCKETID 0 337361 CPUIDVendor Intel Family 6 Model 45 337362 Hardwareevent. This is not a software error. 337363 MCE11 337364 CPU17 BANK 9 337365 MISC90011000010008c ADDR 15e0f8000 337366 TIME1495308194 Sun May 21 03:23:14 2017 337367 MCGstatus: 337368 MCistatus: 337369 Erroroverflow 337370 Correctederror
tail -f /var/log/messages
二、mcelog简单说明
2.1)mcelog此服务是什么?
检查硬件错误,特别是内存和CPU错误的工具
2.2)mcelog工作模式?
cron trigger (效率高低问题)
daemon (centos目前形式) 默认日志打到/var/log/mcelog
2.3)mcelog安装
yum install mcelog or 编译即可。
三、问题分析:
3.1)error信息:
Transaction:Memory scrubbing error MemCtrl:Corrected patrol scrub error Erroroverflow Corrected error
注意,通过上面的报错信息可以判断内存可能出了问题,因为mcelog日志报错,则很可能是硬件信息故障。
3.2)其它信息
MCE(Machine Check Exception)是一类计算机硬件错误。可能原因有:
内存报错,内存缓存故障,cpu故障,也可能和主板,总线有关系。
CPU16 BANK 9
CPU 17 BANK 9 ...
bank定义:
传统内存系统为了保证CPU的正常工作,必须一次传输完CPU在一个传输周期内所需要的数据。而CPU在一个传输周期能接收的数据容量就是CPU数据总线的位宽,单位是bit(位)。内存与CPU之间的数据交换通过主板上的北桥芯片进行,内存总线的数据位宽等同于CPU数据总线的位宽,这个位宽就称之为物理Bank。
bank:一直想通过bank和上面日志,排查可能哪个插槽有问题。这里希望大家给予提示。
3.3)查看服务器各指示灯:
正常。(这里很意外,不过如果问题刚产生不久,指示灯也不会立马出问题)
3.4)咨询朋友
建议:一般硬件出了问题,建议换内存,备份数据等。
四、处理顺序(renzhiyuan.blog.51cto.com)
4.1)先平滑迁移业务保障业务正常运行。
4.2)备份数据,并确保数据的可用性。
4.3)切勿重启,先尝试清楚内存缓存,inode,目录。排除缓存问题。
4.4)如果负载很高,可考虑关闭mcelog服务。
4.5)hp服务器有硬件分析功能,可先排查。
4.6)准备相同规格内存条,尝试更换内存条(最好不要动每个内存原本的位置,一般内存不是很多,可尝 试,要是能判断哪个插槽出问题,可先替换)
4.7)如果更换内存条无效,则可能其它硬件问题,考虑维修处理。
4.8)以上所有进度和结果,做备案,并及时和领导反映。
本文出自 “永不放弃!任志远” 博客,请务必保留此出处http://renzhiyuan.blog.51cto.com/10433137/1933172
以上是关于服务器sel日志结合mcelog分析故障主要针对CPU以及内存的主要内容,如果未能解决你的问题,请参考以下文章
深入浅出SpringCloud原理及实战「Netflix系列之Hystrix」针对于限流熔断组件Hystrix的故障切换的运作流程原理分析