[关闭]
@cdmonkey 2018-12-13T07:21:29.000000Z 字数 2192 阅读 1261

内存占用排查

操作系统


http://blog.51cto.com/leejia/1431756
http://www.it165.net/os/html/201404/7813.html

问题现象:系统占用内存高,使用 ps 指令查看,并没有进程占用过多内存。

  1. [root@PBSOSSBACK ~]# free -m
  2. total used free shared buffers cached
  3. Mem: 3817 3345 2735 0 26 142
  4. -/+ buffers/cache: 1012 2805
  5. Swap: 8187 26 8161
  6. # 这时操作系统中已经将主要的工作进程关闭,但内存占用居高不下。

使用 atop 指令进行查看:

  1. [root@PBSOSSBACK ~]# atop
  2. ...
  3. MEM | tot 3.7G | free 345.9M | cache 229.4M | dirty 0.0M | buff 26.4M | slab 3.1G |

使用 slabtop 指令查看具体信息:

  1. [root@PBSOSSBACK ~]# slabtop
  2. Active / Total Objects (% used) : 6664857 / 7277229 (91.6%)
  3. Active / Total Slabs (% used) : 850234 / 850235 (100.0%)
  4. Active / Total Caches (% used) : 101 / 188 (53.7%)
  5. Active / Total Size (% used) : 2659946.91K / 2701460.45K (98.5%)
  6. Minimum / Average / Maximum Object : 0.02K / 0.37K / 4096.00K
  7. OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
  8. 3828156 3275671 85% 0.06K 64884 59 259536K size-64
  9. 2163690 2163688 99% 1.02K 721230 3 2884920K nfs_inode_cache
  10. 1114180 1114180 100% 0.19K 55709 20 222836K dentry
  11. 56721 7647 13% 0.10K 1533 37 6132K buffer_head
  12. ...

还可使用 vmstat 指令查看:

  1. [systemusers@PBSOSSBACK ~]$ vmstat -m
  2. Cache Num Total Size Pages
  3. nfs_direct_cache 0 0 200 19
  4. nfs_commit_data 0 0 704 11
  5. nfs_write_data 36 36 960 4
  6. nfs_read_data 0 0 896 4
  7. nfs_inode_cache 2140236 2140236 1048 3
  8. nfs_page 0 0 128 30
  9. ...

/proc/meminfo 文件中也能够看出问题:

  1. [root@PBSOSSBACK ~]# cat /proc/meminfo
  2. MemTotal: 3909344 kB
  3. MemFree: 125508 kB
  4. Buffers: 26960 kB
  5. Cached: 215080 kB
  6. SwapCached: 1440 kB
  7. Active: 144816 kB
  8. Inactive: 117336 kB
  9. Active(anon): 7204 kB
  10. Inactive(anon): 13528 kB
  11. Active(file): 137612 kB
  12. Inactive(file): 103808 kB
  13. Unevictable: 0 kB
  14. Mlocked: 0 kB
  15. SwapTotal: 8384508 kB
  16. SwapFree: 8357824 kB
  17. Dirty: 0 kB
  18. Writeback: 0 kB
  19. AnonPages: 19524 kB
  20. Mapped: 7612 kB
  21. Shmem: 360 kB
  22. Slab: 3448700 kB # 就是这里
  23. SReclaimable: 3157544 kB
  24. SUnreclaim: 291156 kB
  25. KernelStack: 2816 kB
  26. PageTables: 4032 kB
  27. NFS_Unstable: 0 kB
  28. Bounce: 0 kB
  29. WritebackTmp: 0 kB
  30. CommitLimit: 10339180 kB
  31. Committed_AS: 141488 kB
  32. VmallocTotal: 34359738367 kB
  33. VmallocUsed: 168580 kB
  34. VmallocChunk: 34359567224 kB
  35. HardwareCorrupted: 0 kB
  36. AnonHugePages: 0 kB
  37. HugePages_Total: 0
  38. HugePages_Free: 0
  39. HugePages_Rsvd: 0
  40. HugePages_Surp: 0
  41. Hugepagesize: 2048 kB
  42. DirectMap4k: 8192 kB
  43. DirectMap2M: 2088960 kB
  44. DirectMap1G: 2097152 kB

解决办法:手动释放

  1. [root@PBSOSSBACK ~]# cat /proc/sys/vm/drop_caches
  2. 0 # 这个值的默认值是0
  3. [root@PBSOSSBACK ~]# sync # 将内存中的数据同步至硬盘
  4. # 接下来就是手动释放缓存:
  5. [root@PBSOSSBACK ~]# echo 2 > /proc/sys/vm/drop_caches
  6. [root@PBSOSSBACK ~]# cat /proc/sys/vm/drop_caches
  7. 2

可将上述操作配置为定时任务:

  1. # crontab -e
  2. 0 */4 * * * sync&&echo 2 >/proc/sys/vm/drop_caches
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注