故障原因总是出乎意料,这次是电源管理相关模块过多占用CPU资源,耗尽了主机CPU资源从而发生了Oracle RAC实例驱逐,影响正常业务出库入单,文章记录下处理过程。
一、故障描述
目前主机及数据库、应用的报警都是通过企业微信发送,为此我还专门设置了一个报警铃声,不成想这样就造成了紧张的气氛,就怕梦中惊坐起。这天收到了某数据库主机负载超过报警值:
系统负载告警:192.168.xx.xx
报警时间
2024-04-02 10:05:34
详细信息
主机报警:192.168.xx.xx,当前系统负载为53.68,超过告警值50.0
复制
二、排除过程
刚开始以为是哪个SQL出现性能问题,随机登录系统查看主机资源(CPU、进程、vmstat),此时登录主机和执行命令已经很卡了,以下是top显示
比较多的acpi_pad进程,每个进程占用95%-100%,直观显示跟电源模块有关?
并没有直接处理该进程,这会首先看看业务正常不,把业务的请求转发到另外正常的节点,很可惜操作很卡顿,没一会业务打来电话说出现了数据库中断,此时查看该节点已经出现了节点驱逐发生
IPC send timeout detected
复制
这时候操作把该节点的CRS关闭,别重启了丢失了异常记录,业务此时已经转入正常节点,可以继续查看这些异常进程了。
翻阅资料与ACPI (Advanced Configuration and Power Interface) 相关,中文为高级配置与电源接口,此时去查看主机的硬件信息,显示电源正常
这时候想起之前查看TOP时,CPU使用信息为
sys使用率特别高达97.6,这通常是系统内核调度或者内核配置不当引起,因本服务器为联想SR系列,查询联想官网匹配到一篇support文档
High CPU utilization on RHEL7 due to acpi_pad - Lenovo x86 Server
Symptom
When the acpi_pad module is loaded on Red Hat Enterprise Linux (RHEL) 7.0 and 7.1 and hyper-threading is disabled on a Haswell EP system, sometimes acpi_pad will take up 95% of the CPU utilization on all cores.
Affected Configuration
The system may be any of the following Lenovo servers:
Lenovo System Cluster 1350, type 1410, any model
This tip is not option specific.
This tip is not software specific.
Solution
TThis is a permanent restriction, there will be no solution.
Workaround
Unload the module acpi_pad:
rmmod acpi_pad
复制
其中sometimes acpi_pad will take up 95% of the CPU utilization on all cores太狠了,直接榨干了资源,也提到Workaround先禁用该模块。
acpi_pad可能涉及到电源功耗管理,更深入的信息为The kernel energy management modules may have the wrong value for the number of processors that are presented to the Operating System. This causes the kernel energy modules to load too many instances of the acpi_pad module,译为内核功耗管理模块提供错误的处理器个数,导致过多加载acpi_pad,出现异常消耗CPU资源,导致一些列上层应用软件问题。
三、配置修改
实际操作中,直接rmmod acpi_pad并不生效,还必须加入模块blacklist,/etc/modprobe.d/blacklist.conf文件中添加
blacklist acpi_pad
复制
为了防止另外节点也出现同样的问题,也做了同样的操作,一经生效这些异常消失,后续持续关注情况,无再次发生此类情况。
欢迎关注我的公众号:ADBANOTE ,再次感谢翻看。