背景: CentOS 6.6  运行elasticsearch 3实例的机器内存报警。通过top查看内存占小# top

Tasks: 394 total,   1 running, 393 sleeping,   0 stopped,   0 zombie

Cpu(s):  1.0%us,  0.6%sy,  0.0%ni, 98.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Mem:  132119032k total, 118262316k used, 13856716k free,   383500k buffers

Swap: 32767996k total,        0k used, 32767996k free,  7681488k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

46499 work      20   0 24.7g  10g 272m S  4.6  8.5  44561:27 java

60273 work      20   0 24.7g 2.1g 133m S 12.3  1.7  18:47.64 java

46228 work      20   0 23.7g 2.0g  15m S  0.7  1.6   5109:26 java

41782 work      20   0 5119m 582m  11m S  6.6  0.5  31402:18 java# free -g

total       used       free     shared    buffers     cached

Mem:        129022     115487      13535          1        374       7494

-/+ buffers/cache:     107618      21404

Swap:        31999          0      31999

内存到哪去了呢,下面我们来分析一下

1. 查看meminfo , 发现系统slab分配器占用了将近50G的内存# cat /proc/meminfo

MemTotal:       132119032 kB

MemFree:        13829572 kB

Buffers:          383500 kB

Cached:          7704224 kB

SwapCached:            0 kB

Active:         17869672 kB

Inactive:        6046628 kB

Active(anon):   13601772 kB

Inactive(anon):  2228420 kB

Active(file):    4267900 kB

Inactive(file):  3818208 kB

Unevictable:           0 kB

Mlocked:               0 kB

SwapTotal:      32767996 kB

SwapFree:       32767996 kB

Dirty:             24796 kB

Writeback:             0 kB

AnonPages:      15828604 kB

Mapped:           432376 kB

Shmem:              1612 kB

Slab:           93501144 kB

SReclaimable:   93428284 kB

SUnreclaim:        72860 kB

KernelStack:       13296 kB

PageTables:        41920 kB

NFS_Unstable:          0 kB

Bounce:                0 kB

WritebackTmp:          0 kB

CommitLimit:    98827512 kB

Committed_AS:   35260328 kB

VmallocTotal:   34359738367 kB

VmallocUsed:      505700 kB

VmallocChunk:   34291725016 kB

HardwareCorrupted:     0 kB

AnonHugePages:      2048 kB

HugePages_Total:       0

HugePages_Free:        0

HugePages_Rsvd:        0

HugePages_Surp:        0

Hugepagesize:       2048 kB

DirectMap4k:        7852 kB

DirectMap2M:     3102720 kB

DirectMap1G:    131072000 kB

2. 什么是slab

slab是Linux操作系统的一种内存分配机制. 其工作是针对一些经常分配并释放的对象,如进程描述符等,这些对象的大小一般比较小,如果直接采用伙伴系统来进行分配和释放,不仅会造成大量的内碎片,而且处理速度也太慢。而slab分配器是基于对象进行管理的,相同类型的对象归为一类(如进程描述符就是一类),每当要申请这样一个对象,slab分配器就从一个slab列表中分配一个这样大小的单元出去,而当要释放时,将其重新保存在该列表中,而不是直接返回给伙伴系统,从而避免这些内碎片。slab分配器并不丢弃已分配的对象,而是释放并把它们保存在内存中。当以后又要请求新的对象时,就可以从内存直接获取而不用重复初始化。

3. 查看slab缓存信息(可用slabtop命令查看)# cat /proc/slabinfo |awk '{if($3*$4/1024/1024 > 100){print $1,$3*$4/1024/1024} }'

dentry 84990.7

buffer_head 461.191

4. strace 进程号strace -fp 60273

[pid  8449] write(573, "?\327l\27\23Lucene46SegmentInfo\0\0\0\1\0034.9"..., 289) = 289

[pid  8449] write(573, "\0\0\0\0(\352\330\274", 8) = 8

[pid  8449] close(573)                  = 0

[pid  8449] open("/opt/crm-es/node2/data/crmdev_tjidc/nodes/0/indices/0323_1926/2/index/_bb1zl.cfs", O_RDONLY) = 573

[pid  8449] fstat(573, {st_mode=S_IFREG|0664, st_size=17594, ...}) = 0

[pid  8449] pread(573, "?\327l\27\26CompoundFileWriterData\0\0\0\1?"..., 1024, 0) = 1024

[pid  8449] open("/opt/soft/crm-es/node2/data/crmdev_tjidc/nodes/0/indices/0323_1926/2/index/_bb1zl.cfe", O_RDONLY) = 575

[pid  8449] fstat(575, {st_mode=S_IFREG|0664, st_size=365, ...}) = 0

[pid  8449] pread(575, "?\327l\27\31CompoundFileWriterEntries\0\0"..., 365, 0) = 365

[pid  8449] close(575)                  = 0

[pid  8449] pread(573, "?\327l\27\22Lucene46FieldInfos\0\0\0\2\20\4_ui"..., 1024, 15956) = 1024

[pid  8449] pread(573, "eldPostingsFormat.suffix\0010\7messa"..., 405, 16980) = 405

进程会在本地频繁的创建、打开、关闭、删除文件

5. 系统的自动slab缓存回收

在slab缓存中,对象分为SReclaimable(可回收)和SUnreclaim(不可回收),而在系统中绝大多数对象都是可回收的。内核有一个参数,当系统内存使用到一定量的时候,会自动触动回收操作。

内核参数:

vm.min_free_kbytes = 836787

6. 恢复

slab机制可以管理分配内存,如果想尽快回收的话则可以执行如下命令:

#sync;sync;sync  Linux学习,http:// linux.it.net.cn

#echo 2 > /proc/sys/vm/drop_caches

等内存回收完毕后再执行:

#echo 0 > /proc/sys/vm/drop_caches

其中drop_caches的4个值有如下含义:

0:不做任何处理,由系统自己管理

1:清空pagecache

2:清空dentries和inodes

3:清空pagecache、dentries和inodes

linux slab 内存 清理,linux系统slab内存占用相关推荐

  1. Android6.0以上应用在长时间在后台,因为内存不足导致系统回收内存,当再次启动应用出现Fragment重叠或者空白、异常解决方案(提供模拟内存不足导致系统回收内存的方案)。

    Android6.0以上应用在长时间在后台,因为内存不足导致系统回收内存,当再次启动应用出现Fragment重叠或者空白解决方案. 首先提供一个方法模拟内存不足导致系统回收内存的方案: 打开Andro ...

  2. 16g电脑内存有什么好处_win7系统16g内存和win10系统16g内存有什么区别

    现阶段,大部分用户所使用的电脑的运行内存通常都是属于16g的,这也是能够保证电脑运行大多数程序都不在话下,但是对于电脑所要安装的系统,许多用户对于win7系统和win10系统总是很难抉择,那么什么区别 ...

  3. linux系统snmpd服务内存偏高,Red Hat Enterprise Linux 5.4 64位系统SNMP内存泄漏(上)

    1.SNMP的内存泄漏问题 SNMP的内存泄漏问题,我最早是在CDN的一台负载均衡调度机上看到的.一个snmpd进程,占用的VIRT将近4G.重启snmpd后VIRT降到150M左右,机器为Red H ...

  4. Linux下free命令查看系统实际内存占用详解(buffer与cache的区别、交换空间、free与available、free命令)

    1.free命令是什么? free 命令是一个显示系统中空闲和已用内存大小的工具.free 命令的输出和 top 命令相似.大多数Linux发行版已经含有 free 命令. 其实 free 命令中的信 ...

  5. linux下软件包清理,Linux运维知识:如何清理Linux系统中的孤立、无用的软件包

    本文主要向大家介绍了Linux运维知识的如何清理Linux系统中的孤立.无用的软件包,通过具体的内容向大家展现,希望对的大家学习Linux运维知识有所帮助. 在Linux下安装软件,通常会自动安装一些 ...

  6. xp linux 桌面快捷方式,清理WinXP系统桌面上的快捷方式图标(转)

    清理WinXP系统桌面上的快捷方式图标(转)[@more@] 在电脑的使用过程中,桌面上的快捷方式图标会随着软件的安装不断增多,桌面会看起来比较杂乱无章,有时候还会降低计算机的启动速度.要是将他们全部 ...

  7. win 7系统出现计算机内存不足,win7系统计算机内存不足的解决方法

    很多小伙伴都遇到过win7系统计算机内存不足的困惑吧,一些朋友看过网上零散的win7系统计算机内存不足的处理方法,并没有完完全全明白win7系统计算机内存不足是如何解决的,今天小编准备了简单的解决办法 ...

  8. linux服务器垃圾清理,Linux下垃圾清理方法总结[转发]

    原文:https://blog.csdn.net/jx232515/article/details/52997540 linux和windows系统不同,linux不会产生无用垃圾文件,但是在升级缓存 ...

  9. 服务器16g内存装哪个系统,16G内存需要装什么系统_16g内存用什么系统好

    如今电脑的配置越来越高,很多新电脑标准配置都是16g运行内存,那么就有很多用户想知道16g内存用什么系统好,需要装什么系统比较好用呢,为此,小编给大家分享一下16G内存需要装什么系统好吧! 用户须知: ...

  10. 服务器16g内存装哪个系统,16g内存的电脑装什么系统好

    最近有位网友新装了一台电脑,他的内存是16g不知道应该装什么系统好?随着科技的发展,电脑配置越来越高,现在很多新电脑标配是16g运行内存.这时候就有了个问题怎么选系统,因为windows操作系统非常多 ...

最新文章

  1. find ip from hostname or find hostname from ip
  2. Linux inode 之我见
  3. centos linux编译c,紧急提醒!Linux是如何编译C语言程序文件的?CentOS 8的gcc使用方法介绍...
  4. 从海外IDC四大标签来看国内IDC公司估值差异问题
  5. zip、gz压缩文件查看命令zless、less
  6. 顶级程序员的心得ndash;Coders at Work
  7. 高级转录组分析和R语言数据可视化课程全部转为视频课
  8. matlab模拟退火最小球覆盖,【模板】模拟退火 费马点以及最小球覆盖
  9. zplane函数怎么用m文件调用_matlab中cla用法
  10. [转载] Python print输出不换行没空格
  11. 自然语言处理理论与实战
  12. 网络互撕是群体极化的典型症状
  13. python自学---最全网址
  14. Angr安装与使用之使用篇(十二)
  15. php百度网盘登录,php百度网盘同步_http200_mmdb
  16. 一文读懂什么是ICT
  17. JavaScript 中 List转Tree,Tree转List
  18. WEB 9.jQuery
  19. 微信html5上传图片闪退,小程序webview上传图片出现闪退
  20. 华为鸿蒙的科技话题作文800字,关于科技的话题作文3篇

热门文章

  1. [jbb0523整理]压缩感知中的数学知识:NP-hard问题
  2. 创建选区快捷键是什么_ps选区的快捷键是什么
  3. VBA-批量删除文本框内容(用类实现)
  4. mysql 数字正则_mysql 正则
  5. oracle后台进程介绍,Oracle后台进程介绍
  6. Linux下如何使用Vi编辑器
  7. 关于穿越机FPV视频果冻效应的讨论
  8. SSRF(目录穿越)
  9. 文献写作:学术研究论文
  10. 计算机类的言情小说,推荐5本女主占有欲超强的言情小说,多汁多肉,本本都戳动你心!...