【CPU】
Hygon C86 7285 32-core Processor
【OS内核版本】
4.19.90-23.8.v2101.ky10.x86_64
【OS镜像版本】
Kylin Linux Advanced Server V10 (Tercel)-0518-x86
【达梦数据库版本】
8.4
发现生产环境数据库异常宕机,dmwatcher将dmserver拉起后依然反复宕机。达梦日志中未发现任何报错信息。
分析操作系统的messages日志,日志记录到了dmserver的进程被系统oom-kill掉的日志信息。
进一步分析系统日志,发现产生OOM的原因是kmalloc申请内存时导致。再从系统日志的堆栈报错信息中,分析到是申请物理上连续的内存时,内存碎片化导致申请不到,从而触发了OOM。
扩大搜索范围,查看故障产生时间17:48左右的系统日志上下文,发现有操作系统组件audit服务内存溢出的信息报出。
通过咨询麒麟操作系统官方技术支持得知,当前操作系统上的audit服务存在bug,导致内存溢出。
通过如上分析过程,dmserver进程被kill掉的原因为麒麟操作系统组件audit内存溢出,导致dmserver申请到溢出部分的内存地址时,无法正常申请到连续内存,触发操作系统kernel异常,操作系统强制kill掉了dmserver进程。
升级操作系统的audit组件到audit-3.0-5.se.12.ky10及其以上版本。
该问题在我司环境中已多次复现,并非偶发现象,强烈建议大家在部署达梦数据库前的环境检查中,加入检查audit组件版本的步骤。
文章
阅读量
获赞