首页 > 系统相关 >银河麒麟SP2 auditd服务内存泄露问题

银河麒麟SP2 auditd服务内存泄露问题

时间:2023-08-29 09:00:41浏览次数:35  
标签:5037 SP2 auditd so.1 usr 0.0 lib64 内存

这几天遇到基于海光服务器的银河麒麟V10 SP2版本操作系统出现内存无故增长问题。

排查发现auditd服务,占用了大量内存。

我的环境是银河麒麟V10 SP2 524,audit版本audit-3.0-5.se.06

==5037== HEAP SUMMARY:
==5037==     in use at exit: 3,022 bytes in 210 blocks
==5037==   total heap usage: 415 allocs, 205 frees, 159,455 bytes allocated
==5037== 
==5037== 122 bytes in 35 blocks are definitely lost in loss record 1 of 6
==5037==    at 0x483479B: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==5037==    by 0x488435C: xmalloc (in /usr/lib64/libaudit.so.1.0.0)
==5037==    by 0x4884393: xmemdup (in /usr/lib64/libaudit.so.1.0.0)
==5037==    by 0x48848FF: ??? (in /usr/lib64/libaudit.so.1.0.0)
==5037==    by 0x4884B4C: get_file_sys_info (in /usr/lib64/libaudit.so.1.0.0)
==5037==    by 0x11217B: ??? (in /usr/sbin/auditd)
==5037==    by 0x112D83: ??? (in /usr/sbin/auditd)
==5037==    by 0x10ECA7: ??? (in /usr/sbin/auditd)
==5037==    by 0x4BD0B26: (below main) (libc-start.c:308)
==5037== 
==5037== 122 bytes in 35 blocks are definitely lost in loss record 2 of 6
==5037==    at 0x483479B: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==5037==    by 0x488435C: xmalloc (in /usr/lib64/libaudit.so.1.0.0)
==5037==    by 0x4884393: xmemdup (in /usr/lib64/libaudit.so.1.0.0)
==5037==    by 0x488494E: ??? (in /usr/lib64/libaudit.so.1.0.0)
==5037==    by 0x4884B4C: get_file_sys_info (in /usr/lib64/libaudit.so.1.0.0)
==5037==    by 0x11217B: ??? (in /usr/sbin/auditd)
==5037==    by 0x112D83: ??? (in /usr/sbin/auditd)
==5037==    by 0x10ECA7: ??? (in /usr/sbin/auditd)
==5037==    by 0x4BD0B26: (below main) (libc-start.c:308)

分析auditd服务存在内存泄露问题,位置在/usr/lib64/libaudit.so.1.0.0的get_file_sys_info处,malloc以后未释放。

auditd是审计服务,会对ssh的会话做日志记录,该问题出现在写日志前判断分区时的一部分代码。

经过循环ssh登录退出,也复现了这个现象。

 yum update audit

升级到audit-3.0-5.se.07.ky10及以后版本即可解决

我也找到了官方发布的补丁:https://www.kylinos.cn/index.php/support/update/6.html

 

标签:5037,SP2,auditd,so.1,usr,0.0,lib64,内存
From: https://www.cnblogs.com/vpandaxjl/p/17663818.html

相关文章

  • 内存管理
    虚拟内存分段分页为了在多进程环境下,使得进程之间的内存地址不受影响,相互隔离,于是操作系统就为每个进程独立分配一套虚拟地址空间,每个程序只关心自己的虚拟地址就可以,实际上大家的虚拟地址都是一样的,但分布到物理地址内存是不一样的。作为程序,也不用关心物理地址的事情。那既然......
  • C++对象内存模型
    根据前面讲过的知识,C++的对象内存模型主要包含了以下几个方面的内容:如果没有虚函数也没有虚继承,那么对象内存模型中只有成员变量。如果类包含了虚函数,那么会额外添加一个虚函数表,并在对象内存中插入一个指针,指向这个虚函数表。如果类包含了虚继承,那么会额外添加一个虚基类表,......
  • JVM 内存大对象监控和优化实践
    作者:vivo互联网服务器团队-LiuZhen、YeWenhao服务器内存问题是影响应用程序性能和稳定性的重要因素之一,需要及时排查和优化。本文介绍了某核心服务内存问题排查与解决过程。首先在JVM与大对象优化上进行了有效的实践,其次在故障转移与大对象监控上提出了可靠的落地方案。最后,总......
  • JVM系列一:JVM内存组成及分配
    java内存组成介绍:堆(Heap)和非堆(Non-heap)内存      按照官方的说法:“Java虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在Java虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heapmemory)”。可以看出JVM主要管理两种......
  • 常用环境设置jvm内存
    参数解释:Xms—堆内存初始大小Xmx—堆内存最大值MetaspaceSize—永久内存初始大小MaxMetaspaceSize—永久内存最大值-XX:+UseConcMarkSweepGC  使用cms并行垃圾回收机制 内存大小设置:jstat-gc进程号 查看OU即是老年代(KB)根据老年代设置参数Java堆大小设置,Xms......
  • 操作系统学习笔记(三)——内存管理
    一、虚拟内存将进程所用的地址隔离开,让操作系统为每个进程分配独立的一套虚拟地址。虚拟内存可以使进程的运行内存超过物理内存的大小。进程持有的虚拟地址会通过CPU芯片中的内存管理单元(MMU)的映射关系,来转换变成物理地址,然后再通过物理地址访问内存,如下图所示:有两种映射方......
  • 多行多列合并成一列内存数组的结果
    问题:多行多列合并成一列内存数组的结果函数公式解决:{=PHONETIC(OFFSET(A1:E1,ROW(1:23)-1,))}用Offset函数生成一个多维引用,每个平面分别是A:E表的每一行。利用Phonetic函数将每个平面里的内容进行合并。此公式的缺陷在于被合并的内容只能是文本,如果数据源中包含数值、日......
  • 无涯教程-进程 - 内存映射
    mmap()系统调用提供了将文件或设备映射到内存的调用进程的虚拟地址空间中的映射。这有两种类型-文件映射 - 此映射将进程的虚拟内存区域映射到文件,这意味着读取或写入那些内存区域会导致文件被读取或写入,这是默认的映射类型。匿名映射 - 此映射进程的虚拟内存区域,没有......
  • WinDbg排查.net性能或内存问题步骤简述
    目录一、安装WinDbg二、诊断数据获取三、加载分析四、举例分析以下步骤是分析高CPU占用的命令本文摘自一、安装WinDbg第一步当然是安装了,需要注意的是,千万不要搜索windbg然后下载,搜索到的windbg安装文件,都不是我们想要的,真正的windbg,实际上是在微软的SDK里,下载链接在这里:ht......
  • 动态内存函数
    1.为什么存在动态内存分配?我们已经掌握的内存开辟方式有:int val=20;//在栈空间上开辟四个字节char arr[10]={0};//在栈空间上开局但是上述的开辟空间的方式有两个特点1.空间开辟大小是固定的。2.数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配。但是对于空间的需......