lsyncd导致内存泄漏
参考文档
不释放内存,可能存在内存泄漏 ·期刊 #623 ·lsyncd/lsyncd (github.com)
Lsyncd 导致内存泄漏。·期刊 #671 ·lsyncd/lsyncd (github.com)
背景介绍
在Lsyncd - 热气球! - 博客园 (cnblogs.com)这篇文章中记录了为何使用lsyncd以及如何使用的。
近期通过top命令发现lsyncd这个程序的内存占用比较高
查看了一下lsyncd进程的内存占用具体值
[root@ydy36 ~]# cat /proc/19959/status
Name: lsyncd
Umask: 0022
State: S (sleeping)
Tgid: 19959
Ngid: 0
Pid: 19959
PPid: 1
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 128
Groups:
VmPeak: 494620 kB
VmSize: 494616 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 483920 kB
VmRSS: 483736 kB
RssAnon: 482852 kB
RssFile: 884 kB
RssShmem: 0 kB
VmData: 482908 kB
VmStk: 132 kB
VmExe: 172 kB
VmLib: 3156 kB
VmPTE: 988 kB
VmSwap: 0 kB
Threads: 1
SigQ: 0/63455
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000001000
SigCgt: 0000000000014003
CapInh: 0000000000000000
CapPrm: 0000001fffffffff
CapEff: 0000001fffffffff
CapBnd: 0000001fffffffff
CapAmb: 0000000000000000
NoNewPrivs: 0
Seccomp: 0
Speculation_Store_Bypass: thread vulnerable
Cpus_allowed: ff
Cpus_allowed_list: 0-7
Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001
Mems_allowed_list: 0
voluntary_ctxt_switches: 13370
nonvoluntary_ctxt_switches: 249197
VmRSS: 483736 kB
代表的是占用的具体值,约等于0.5G。
lsyncd作为一个传输文件的工具应该是占用网络io比较多,怎么会占用0.5G的内存呢? 并且在Lsyncd - 热气球! - 博客园 (cnblogs.com)中曾做过实验,传输过程中有明显增长的只有网络,CPU和内存都没有明显变化。
问题原因
在GitHub Issue中找到了类似的问题:不释放内存,可能存在内存泄漏 ·期刊 #623 ·lsyncd/lsyncd (github.com),其中https://github.com/fabrizio2210 用户十分清晰的记录下了lsyncd内存增长的📈。
似乎 lsyncd 会记住它处理的所有文件,而不会将它们从内存中删除。
解决办法
Lsyncd 导致内存泄漏。·期刊 #671 ·lsyncd/lsyncd (github.com)该Issue中记录了已经将此Issue修复,所以新版本应该不会出现内存泄漏的问题。(我并没有进行测试。)
如果你像我一样,已经大规模部署使用并且不确定新版本是否还存在此问题,一个简单的处理方式是定时restart。
# 定时重启lsyncd
0 6 * * * /usr/bin/systemctl restart lsyncd
一个人花在影响自己未来命运的工作选择上的精力,竟比花在购买穿了一年就会扔掉的衣服上的心思要少得多,这是一件多么奇怪的事情,尤其是当他未来的幸福和富足要全部依赖于这份工作时。