麒麟系统“内存溢出”等问题根源是auditd、mate-indicators或mysql容器的内存泄漏,需定位并切断泄漏源:auditd旧版本每ssh连接泄漏122字节,mate-indicators日历点击触发内存飙升,mysql因file-max过高预分配大量内存,对应采取停用auditd、升级补丁包或限制ulimit。

麒麟系统软件运行时突然弹出“内存溢出”提示、界面卡顿、SSH断连甚至桌面假死,不是程序本身代码缺陷,而是auditd服务、mate-indicators组件或MySQL容器在Kylin V10 SP1/SP2中存在已知内存泄漏缺陷,必须定位泄漏源并切断——不能只调大JVM参数或重启应用。
确认是否为auditd服务泄漏
第一步:打开终端,执行rpm -qa | grep audit,检查返回结果中是否含audit-3.0-5.se.06或更早版本。该版本在Kylin V10 SP1/SP2中普遍存在内存泄漏缺陷,每建立一次SSH连接就新增约122字节无法回收的堆内存,三天后可吞噬90%可用RAM。
第二步:运行top -b -n1 | grep auditd,观察RES列数值是否持续高于800MB且随SSH登录次数明显增长。若确认是auditd,立即执行sudo systemctl stop auditd && sudo systemctl disable auditd停用服务。
【禁用前必须先关闭所有SSH会话,否则auditd可能因正在记录而拒绝停止】
排查mate-indicators日历组件泄漏
方法一:快速验证进程占用
在终端中运行watch -n 1 "ps aux | grep mate_indicators | grep -v grep",连续点击桌面右下角日历图标20次。若RES值从50MB飙升至300MB以上且不回落,即确认泄漏存在。
方法二:升级修复包
下载对应架构补丁包mate-indicators-20150918kord0ukui58-10.p08.ky10.aarch64.rpm(ARM)或x86_64.rpm(X86),执行sudo rpm -Uvh *.rpm完成覆盖安装。安装后需注销当前桌面会话或重启系统,旧进程残留内存才真正释放。
临时规避MySQL容器内存异常
① 进入容器内部,执行cat /proc/sys/fs/file-max和ulimit -n,对比两者数值。Kylin V10默认将open_files_limit设为十亿级,导致MySQL预分配海量内存结构。
② 修改Docker启动参数,在docker run命令末尾追加--ulimit nofile=65536:65536,强制限制文件句柄上限。
③ 若已部署为systemd服务,编辑/etc/systemd/system/mysql-container.service,在ExecStart行末添加相同ulimit参数,然后执行sudo systemctl daemon-reload && sudo systemctl restart mysql-container。











