银河麒麟服务器两大典型内存泄漏问题根治方案(auditd + mate-indicators)

一、问题背景
近期生产银河麒麟V10服务器出现内存持续飙升、系统负载虚高、业务内存资源不足的异常现象。服务器长期稳定运行624天,无业务异常迭代、无高负载业务场景,但内存占用逐日递增,最终挤占数据库、Java业务进程资源,间接导致系统卡顿、负载偏高。
通过top、ps、auditctl等命令排查,定位到两个麒麟系统已知典型内存泄漏进程:系统审计进程 auditd、桌面指示器进程 mate-indicators,二者长期后台运行无内存释放,累计占用超17G内存,是本次服务器内存异常的核心原因。
二、问题一:auditd 无规则下内存暴涨、内存泄漏

  1. 问题现象
    服务器常驻进程 /sbin/auditd 及其子进程 /usr/sbin/sedispatch,无任何自定义审计规则,却长期占用大量内存(最高13G+),且内存随运行时间持续单向上涨,无法自动回收。
  2. 进程作用说明
  • auditd:Linux/麒麟系统自带安全审计守护进程,默认开机自启,负责记录系统登录、权限变更、进程调用等基础安全事件,多用于等保合规、操作溯源。
  • sedispatch:auditd 子进程,负责分发内核审计事件,处理日志流转与推送。
    重点:生产业务服务器(数据库、Java服务)纯SSH运维场景,完全无需开启auditd服务。
  1. 根因分析
  • 低版本 auditd 存在官方已知内存泄漏BUG,系统长期不间断运行(超600天),进程内部缓存、句柄无法自动释放,内存缓慢累积暴涨;
  • 系统默认审计策略保守(failure=1、backlog_wait_time=15000),无规则场景下仍持续采集基础系统事件,加剧内存堆积;
  • 无日志积压、无事件丢失,完全是进程BUG导致的被动内存占用,非业务流量导致。
  1. 完整解决方案(永久关闭根治)
    业务服务器无需审计合规,直接关闭服务、禁用开机自启,彻底杜绝内存泄漏:
# 1. 立即停止auditd服务,释放占用内存
systemctl stop auditd

# 2. 禁用开机自启,防止重启后自动拉起
systemctl disable auditd

# 3. 临时关闭内核审计开关(兜底防护,重启失效)
auditctl -e 0


# 4. 验证关闭状态
systemctl status auditd

执行后 auditd、sedispatch 进程彻底消失,对应13G+内存瞬间回收,无任何业务影响。
三、问题二:mate-indicators 桌面进程内存泄漏(4.1G常驻)

  1. 问题现象
    top 监控发现 mate-indicators 进程常驻内存,占用4.1G物理内存,占总内存13.6%,CPU空闲率99.6%但系统负载虚高(14+),核心原因是内存资源被无效挤占,业务进程资源分配不足。
    mate-indicators 是银河麒麟MATE桌面环境的状态栏指示器进程,仅用于图形桌面展示(时间、网络、音量、系统托盘、通知图标)。
  2. 进程作用说明
    核心误区:服务器全程使用SSH命令行运维,未登录图形桌面,但系统默认开机启动图形服务 lightdm,导致该进程后台常驻,属于纯无效进程占用。
  • 麒麟V10低版本 mate-indicators 存在官方确认的内存泄漏BUG,定时刷新桌面状态、时间逻辑存在内存不释放问题;
  1. 根因分析
  • 系统长期运行600+天,内存单向累积,最终占用数GB内存;
  • 生产服务器无需图形桌面,lightdm桌面服务及附属进程完全无存在必要。
  1. 分级解决方案(临时+永久根治)
    方案1:临时释放内存(不中断业务)
    直接杀死泄漏进程,进程会自动重启,内存回落至几十MB正常水平:
# 替换为实际PID
kill -9 3494841

方案2:永久根治(生产服务器推荐,最优解)
彻底关闭图形桌面服务,切换纯命令行模式,杜绝进程常驻:

# 1. 关闭图形桌面服务
systemctl stop lightdm

# 2. 禁用开机自启
systemctl disable lightdm

# 3. 设置系统默认开机为字符命令行模式
systemctl set-default multi-user.target

执行后 mate-indicators 进程永久消失,彻底解决该进程内存泄漏问题,且不影响SSH远程连接、数据库、Java等所有业务服务。
方案3:保留桌面,升级修复BUG(办公服务器适用)
若服务器需要使用图形桌面,可升级组件修复内存泄漏,升级至 20150918kord0ukui58-10.p07及以上版本:

# 查看当前版本
rpm -qa | grep mate-indicators


# 在线升级修复包
yum update mate-indicators -y

四、优化后效果验证

  1. 无效进程 auditd、mate-indicators 完全清除,累计回收17G+物理内存;
  2. 系统负载从14+高位逐步回落,消除内存挤占导致的虚高负载;
  3. sqlservr、Java、达梦 dmserver 等核心业务进程内存资源充足,运行更稳定;
  4. 开机默认纯命令行模式,杜绝桌面进程后台偷跑资源。
    五、运维总结与避坑建议
  5. 麒麟服务器典型通病
    银河麒麟V10早期版本存在两大高频内存泄漏问题:auditd 审计进程内存堆积、mate-indicators 桌面进程内存泄漏,均为系统BUG,非业务故障,长期运行服务器必现。
  6. 生产服务器运维规范
  • 纯业务服务器(数据库、微服务、中间件)禁止保留图形桌面环境,默认切换 multi-user.target 命令行模式;
  • 无等保合规要求的服务器,直接关闭 auditd 服务,避免无效内存占用;
  • 长期运行服务器,定期巡检常驻系统进程,排查BUG类内存泄漏问题;
  • 不要被「CPU空闲、业务无报错」误导,内存泄漏会隐性挤占业务资源,导致系统负载异常、业务卡顿。
  1. 兜底优化建议
    若部分服务器需保留auditd服务,可配置定时重启任务,规避内存泄漏:
# 每周日凌晨3点自动重启auditd,释放内存
crontab -e
0 3 * * 0 /usr/bin/systemctl restart auditd >> /var/log/audit_restart.log 2>&1
posted @ 2026-06-29 15:57  Mr.xiaobai丶  阅读(43)  评论(0)    收藏  举报