我正在使用带有内核 5.4.0-70-generic 的 Ubuntu 20.04.2 LTS。共享内存不断堆积,直到系统因没有剩余内存而挂起。
我正在使用 Prometheus + Grafana 来监控我的系统资源,从他们的图表中可以看出,从重新启动到共享内存达到 20 GB 大约需要 4-7 天。但它并没有就此停止,它会继续增长,直到我再次重新启动。
free -h
从命令 中可以看到相同数量的共享内存使用情况。
即使我关闭所有应用程序并且不使用计算机,共享内存也会不断增长。造成这种行为的原因是什么?我怎样才能开始调查这个问题?我如何找出哪些进程使用了那么多共享内存?
$ ipcs -m --human
------ Shared Memory Segments --------
key shmid owner perms size nattch status
0x00000000 3145729 martsraits 600 256M 2 dest
0x00000000 2588677 martsraits 600 512K 2 dest
0x00000000 1245191 martsraits 600 512K 2 dest
0x00000000 5832713 martsraits 600 512K 2 dest
0x00000000 10 martsraits 600 512K 2 dest
0x00000000 1212427 martsraits 600 512K 2 dest
0x00000000 12 martsraits 600 512K 2 dest
0x00000000 1212429 martsraits 600 64M 2 dest
0x00000000 32785 martsraits 600 512K 2 dest
0x00000000 2064402 martsraits 600 512K 2 dest
0x00000000 5537814 martsraits 600 512K 2 dest
0x00000000 1114138 martsraits 600 512K 2 dest
0x00000000 8945695 martsraits 600 23,3K 2 dest
0x00000000 1507360 martsraits 600 512K 2 dest
0x00000000 2916388 martsraits 600 512K 2 dest
0x00000000 4816933 martsraits 606 8,2M 2 dest
0x00000000 4816934 martsraits 606 8,2M 2 dest
0x00000000 4816935 martsraits 600 128M 2 dest
0x00000000 3670057 martsraits 600 512K 2 dest
0x00000000 3309611 martsraits 600 512K 2 dest
0x00000000 1441844 martsraits 600 512K 2 dest
0x00000000 2555960 martsraits 600 8M 2 dest
0x00000000 917564 martsraits 600 512K 2 dest
0x00000000 3899453 martsraits 600 512K 2 dest
中的大小列总和ipcs -m
只有500M。
答案1
我刚刚在嵌入式系统上遇到了这个问题,我的问题是tmpfs
- 具体来说,日志存储在那里(我需要更改它),并且它们占用了太多的内存。是的,在它的输出中free
显示为占用共享内存。