今天遇到一个好玩的事情,服务器丢了两颗物理CPU
今天发现应用服务器的批处理脚本异常,导致服务器的CPU过高。查看服务器的资源使用率时,无意中发现一个服务器的CPU竟然少了一半。
这套数据库是两节点的RAC,两个服务器是都是IBM 3850X5,OEL 6.5操作系统,都是4颗10核的CPU,128G内存,在使用sar命令监控资源使用率的时候,发现节点2的CPU核数少了一半。
节点1:
Linux 3.8.13-16.2.1.el6uek.x86_64 (SL010A-IVDB03) 11/02/2018 _x86_64_ (80 CPU) 05:50:24 PM CPU %user %nice %system %iowait %steal %idle 05:50:25 PM all 16.33 0.00 0.89 0.19 0.00 82.59 05:50:26 PM all 16.70 0.00 0.94 0.50 0.00 81.86 05:50:27 PM all 15.82 0.00 0.89 0.14 0.00 83.15 05:50:28 PM all 16.52 0.00 1.03 0.18 0.00 82.27 05:50:29 PM all 15.81 0.00 0.79 0.11 0.00 83.28 05:50:30 PM all 15.53 0.00 0.67 0.14 0.00 83.67 05:50:31 PM all 14.73 0.00 0.59 0.14 0.00 84.54
节点2:
[root@SL010A-IVDB04 ~]# sar 1 Linux 3.8.13-16.2.1.el6uek.x86_64 (SL010A-IVDB04) 11/02/2018 _x86_64_ (40 CPU) 05:50:18 PM CPU %user %nice %system %iowait %steal %idle 05:50:19 PM all 40.10 0.00 1.54 0.08 0.00 58.28 05:50:20 PM all 40.11 0.00 1.36 0.08 0.00 58.46 05:50:21 PM all 40.49 0.00 2.32 0.30 0.00 56.88 05:50:22 PM all 39.82 0.00 1.61 0.05 0.00 58.51 05:50:23 PM all 44.68 0.00 2.02 0.05 0.00 53.25 05:50:24 PM all 42.59 0.00 1.54 0.15 0.00 55.72 05:50:25 PM all 42.46 0.00 1.44 0.05 0.00 56.05
上面的信息可以看到,节点1显示的是80核CPU,而几点2显示的却是40核,通过查看/proc/cpuinfo文件,节点2也只是显示40核CPU。
节点1:
processor : 79 vendor_id : GenuineIntel cpu family : 6 model : 47 model name : Intel(R) Xeon(R) CPU E7- 4860 @ 2.27GHz stepping : 2 microcode : 0x37 cpu MHz : 1064.000 cache size : 24576 KB physical id : 3 siblings : 20 core id : 25 cpu cores : 10 apicid : 243 initial apicid : 243 fpu : yes fpu_exception : yes cpuid level : 11 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt aes lahf_lm ida arat epb dtherm tpr_shadow vnmi flexpriority ept vpid bogomips : 4521.87 clflush size : 64 cache_alignment : 64 address sizes : 44 bits physical, 48 bits virtual power management:
节点2:
processor : 39 vendor_id : GenuineIntel cpu family : 6 model : 47 model name : Intel(R) Xeon(R) CPU E7- 4850 @ 2.00GHz stepping : 2 microcode : 0x37 cpu MHz : 1996.000 cache size : 24576 KB physical id : 3 siblings : 20 core id : 25 cpu cores : 10 apicid : 243 initial apicid : 243 fpu : yes fpu_exception : yes cpuid level : 11 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt aes lahf_lm ida arat epb dtherm tpr_shadow vnmi flexpriority ept vpid bogomips : 3989.91 clflush size : 64 cache_alignment : 64 address sizes : 44 bits physical, 48 bits virtual power management:
在这里又发现个问题,两个服务器的CPU型号是不一样的,节点1是E7-4860主频是2.27GHz的CPU,而节点2是E7-4850主频是2.0GHz的CPU,RAC最好是使用同型号同配置的服务器,像这种CPU主频不一致的CPU,对RAC来讲,高主频的CPU会降频,再次查看服务器的版本号,发现两台服务器的型号并不完全相同,这两台服务器并不是一个批次的服务器,并且节点1的processor是79,0-79也就是80个,节点2的processor是39,0-39也就是40个,比节点1少了一半。
节点1:
[root@SL010A-IVDB03 ~]# dmidecode | grep Prod Product Name: System x3850 X5 -[71434VZ]- Product Name: Node 1, Processor Card Product Name: Node 1, PCI I/O Card Product Name: Node 1, DASD I/O Daughter Card Product Name: Node 1 Memory Card 1 Product Name: Node 1 Memory Card 2 Product Name: Node 1 Memory Card 3 Product Name: Node 1 Memory Card 4 Product Name: Node 1 Memory Card 5 Product Name: Node 1 Memory Card 6 Product Name: Node 1 Memory Card 7 Product Name: Node 1 Memory Card 8
节点2:
[root@SL010A-IVDB04 ~]# dmidecode | grep Prod Product Name: System x3850 X5 -[71434X2]- Product Name: Node 1, Processor Card Product Name: Node 1, PCI I/O Card Product Name: Node 1, DASD I/O Daughter Card Product Name: Node 1 Memory Card 1 Product Name: Node 1 Memory Card 2 Product Name: Node 1 Memory Card 3 Product Name: Node 1 Memory Card 4 Product Name: Node 1 Memory Card 5 Product Name: Node 1 Memory Card 6 Product Name: Node 1 Memory Card 7 Product Name: Node 1 Memory Card 8
节点1是x3850 X5 -[71434VZ]型号的服务器,节点2是x3850 X5 -[71434X2]型号的服务器。可是这并不能解释节点2的CPU怎么会比节点1少一半的问题,难道是节点2没有使用多线程?这可能性不大,这两台服务器的CPU虽然不一样,但都是10核心20线程的CPU,4颗CPU就是40核80线程,节点2为啥会少一半呢?再次查看/proc/cpuinfo文件,只查看physical id发现,节点2少了两颗CPU。
节点1:
[root@SL010A-IVDB03 ~]# cat /proc/cpuinfo | grep physica | grep -v virtual physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 1 physical id : 1 physical id : 1 physical id : 1 physical id : 1 physical id : 1 physical id : 1 physical id : 1 physical id : 1 physical id : 1 physical id : 2 physical id : 2 physical id : 2 physical id : 2 physical id : 2 physical id : 2 physical id : 2 physical id : 2 physical id : 2 physical id : 2 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 1 physical id : 1 physical id : 1 physical id : 1 physical id : 1 physical id : 1 physical id : 1 physical id : 1 physical id : 1 physical id : 1 physical id : 2 physical id : 2 physical id : 2 physical id : 2 physical id : 2 physical id : 2 physical id : 2 physical id : 2 physical id : 2 physical id : 2 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 3
节点2:
[root@SL010A-IVDB04 ~]# cat /proc/cpuinfo | grep physica | grep -v virtual physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 0 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 3 physical id : 3
节点2只有0和3这两颗CPU,节点1有0、1、2、3四颗CPU,节点2的1和2这两颗CPU哪里去了?查看操作系统日志并没有发现CPU相关的错误,找管理主机的同事去机房查看,也没有发现故障灯报警。
问题还得回到两台服务器的型号不一致的问题上来考虑,这套RAC的搭建过程及测试我都是知道的,前同事搭建的,当时服务器的型号和配置都是一样的,但是在测试阶段遇到节点2服务器无故重启的情况,而且很频繁,软件和硬件都没找到原因,后来负责主机的同事就把节点2换了一台其他的同配置同型号3850服务器,当时并没有检查服务器的配置是否完全一样,现在想想,这个节点2服务器当时就应该是只插了两颗CPU,并不是4颗CPU,4U的服务器只插两颗CPU,也真服了。
现在正在和管理主机的同事协商解决方案,过几天这套RAC有个扩容增加ASM磁盘的需求,有停机维护时间,应该会一起解决这个问题吧。
大坑无处不在,一不小心就掉沟里了,任何一个细节都不容忽略。