这是一个8GB RAM(内核3.12)的无头服务器…即使在几天之后,我的内存也很低。 事实上,这个服务器已经OOMed前几天…有些东西正在失去记忆,但我不知道在哪里…
看到下面的输出:
简而言之:
[root @ localhost〜]#cat / proc / meminfo
MemTotal:8186440 kB
MemFree:251188 kB
缓冲区:144 kB
caching:853548 kB
SwapCached:9988 kB
Active:480036 kB
无效:529456 kB
Active(anon):256196 kB
Inactive(anon):333072 kB
Active(file):223840 kB
Inactive(file):196384 kB
Unevictable:13656 kB
Mlocked:0 kB
SwapTotal:4194300 kB
SwapFree:4092540 kB
脏:356 kB
写回:0 kB
AnonPages:161576 kB
映射:50116 kB
Shmem:419812 kB
板:72680 kB
SReclaimable:50648 kB
SUnreclaim:22032 kB
KernelStack:1824 kB
PageTables:10260 kB
NFS_Unstable:0 kB
弹跳:0 kB
WritebackTmp:0 kB
CommitLimit:8287520 kB
Committed_AS:1883404 kB
VmallocTotal:34359738367 kB
VmallocUsed:91804 kB
VmallocChunk:34359637332 kB
HardwareCorrupted:0 kB
AnonHugePages:0 kB
HugePages_Total:0
HugePages_Free:0
HugePages_Rsvd:0
HugePages_Surp:0
Hugepagesize:2048 kB
DirectMap4k:83180 kB
DirectMap2M:8296448 kB
[root @ localhost〜]#ipcs -m
------共享内存段--------
键shmid owner允许字节数字状态
0x01123bac 0根600 1000 8
[root @ localhost〜]#df -h
使用的文件系统大小可用使用%
tmpfs 4.0G 393M 3.6G 10%/ run
[root @ localhost〜]#为我在/ proc / * /状态; 做grep VmRSS $我; 完成| awk'{s = s + $ 2} END {print s / 1024}'
262.375
[root @ localhost〜]#为我在/ proc / * /状态; grep VmHWM $ i; 完成| awk'{s = s + $ 2} END {print s / 1024}'
526.77
编辑:我已经设置overcommit = 2(禁用),以防万一(我重新启动2天前)
[root @ localhost linux]#cat / proc / sys / vm / overcommit_memory 2 [root @ localhost linux]#df -h | grep tmpfs devtmpfs 3.9G 0 3.9G 0%/ dev tmpfs 4.0G 0 4.0G 0%/ dev / shm tmpfs 4.0G 532K 4.0G 1%/运行 tmpfs 4.0G 0 4.0G 0%/ sys / fs / cgroup tmpfs 4.0G 0 4.0G 0%/ tmp tmpfs 4.0G 532K 4.0G 1%/ var / spool / postfix / run / saslauthd [root @ localhost linux]#为我在/ proc / * /状态; 做grep VmRSS $我; 完成| awk'{s = s + $ 2} END {print s / 1024}' 434.188 [root @ localhost linux]#为我在/ proc / * /状态; grep VmHWM $ i; 完成| awk'{s = s + $ 2} END {print s / 1024}' 545.551 [root @ localhost linux]#cat / proc / meminfo MemTotal:8186440 kB MemFree:146576 kB 缓冲区:1728 kB caching:5212588 kB SwapCached:0 kB Active:2560112 kB Inactive:2874464 kB Active(anon):94464 kB Inactive(anon):136528 kB Active(file):2465648 kB Inactive(file):2737936 kB Unevictable:9772 kB Mlocked:0 kB SwapTotal:4194300 kB SwapFree:4194300 kB 脏:1436 kB 写回:0 kB AnonPages:230032 kB 映射:50540 kB Shmem:960 kB 板:316804 kB SReclaimable:291712 kB SUnreclaim:25092 kB KernelStack:1880 kB PageTables:11184 kB NFS_Unstable:0 kB 弹跳:0 kB WritebackTmp:0 kB CommitLimit:8287520 kB Committed_AS:1160812 kB VmallocTotal:34359738367 kB VmallocUsed:91676 kB VmallocChunk:34359582672 kB HardwareCorrupted:0 kB AnonHugePages:0 kB HugePages_Total:0 HugePages_Free:0 HugePages_Rsvd:0 HugePages_Surp:0 Hugepagesize:2048 kB DirectMap4k:91372 kB DirectMap2M:8288256 kB
所以,我使用8GB:
我仍然是1.5GB的短 …这是一个内核泄漏? 或这是怎么回事?
编辑2:我在另一个primefaces板上有相同的问题
我也检查kmemleak是否看到了什么,但没有…我没有想法…
编辑3:更新到内核3.17.2似乎已经解决了这个问题,但我仍然不知道如何跟踪这些内存泄漏…
lkml认为它可能是https://lkml.org/lkml/2014/10/15/447 ,但是这个补丁不在3.17.2中,并且thp分配并不指向那个方向
然而,/ proc kpageflags可能会显示哪些部分分配了哪些页面,这可能会有所帮助。 在内核源码中的tools / vm / page-types.c中,可能会保存一些关于kpageflags二进制输出结构的信息。