作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息

问题描述

Linux服务器内存使用量超过阈值,触发报警。

问题排查

首先,通过free命令观察系统的内存使用情况,显示如下:

total used freeshared buffers cached

Mem:24675796 24587144 88652 0 357012 1612488

-/+ buffers/cache: 22617644 2058152Swap:2096472 108224 1988248

其中,可以看出内存总量为24675796KB,已使用22617644KB,只剩余2058152KB。

然后,接着通过top命令,shift + M按内存排序后,观察系统中使用内存最大的进程情况,发现只占用了18GB内存,其他进程均很小,可忽略。

因此,还有将近4GB内存(22617644KB-18GB,约4GB)用到什么地方了呢?

进一步,通过cat /proc/meminfo发现,其中有将近4GB(3688732KB)的Slab内存:

......

Mapped:25212kB

Slab:3688732kB

PageTables:43524kB

......

Slab是用于存放内核数据结构缓存,再通过slabtop命令查看这部分内存的使用情况:

OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME13926348 13926348 100% 0.21K 773686 183494744K dentry_cache334040 262056 78% 0.09K 8351 4033404K buffer_head151040 150537 99% 0.74K 30208 5 120832K ext3_inode_cache

发现其中大部分(大约3.5GB)都是用于了dentry_cache。

问题解决

1. 修改/proc/sys/vm/drop_caches,释放Slab占用的cache内存空间(参考drop_caches的官方文档):

Writing to this will cause the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free.

Tofreepagecache:* echo 1 > /proc/sys/vm/drop_caches

Tofreedentries and inodes:* echo 2 > /proc/sys/vm/drop_caches

Tofreepagecache, dentries and inodes:* echo 3 > /proc/sys/vm/drop_caches

As this is a non-destructive operation, and dirty objects are notfreeable, the user should run "sync" first in order to makesure allcached objects are freed.

This tunable was addedin 2.6.16.

2. 方法1需要用户具有root权限,如果不是root,但有sudo权限,可以通过sysctl命令进行设置:

$sync$sudo sysctl -w vm.drop_caches=3$sudo sysctl -w vm.drop_caches=0 #recovery drop_caches

操作后可以通过sudo sysctl -a | grep drop_caches查看是否生效。

3. 修改/proc/sys/vm/vfs_cache_pressure,调整清理inode/dentry caches的优先级(默认为100),LinuxInsight中有相关的解释:

At the default value of vfs_cache_pressure = 100 the kernel will attempt to reclaim dentries and inodes at a “fair” rate with respect to pagecache and swapcache reclaim. Decreasing vfs_cache_pressure causes the kernel to prefer to retain dentry and inode caches. Increasing vfs_cache_pressure beyond 100 causes the kernel to prefer to reclaim dentries and inodes.

具体的设置方法,可以参考方法1或者方法2均可。

参考资料

https://www.kernel.org/doc/Documentation/sysctl/vm.txt

http://major.io/2008/12/03/reducing-inode-and-dentry-caches-to-keep-oom-killer-at-bay/

http://linux-mm.org/Drop_Caches

was进程内存占用过大_Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决...相关推荐

  1. was进程内存占用过大_linux服务器内存占用过大

    top查看内存占用90%以上,而进程内存占用和不超过20%.cat /proc/meminfo 查看HugePages_Total值较大 原因是页空间占用过大(nr_hugepages).本次解决方法 ...

  2. Linux内存耗尽宕机6,转载:Linux服务器Cache占用过多内存导致系统内存不足最终java应用程序崩溃解决方案...

    原文链接: https://blog.csdn.net/u014740338/article/details/66975550 问题描述 Linux内存使用量超过阈值,使得Java应用程序无可用内存, ...

  3. Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决

    Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决 参考文章: (1)Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决 (2)https://www.cnblog ...

  4. Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决(续)

    Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决(续) 参考文章: (1)Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决(续) (2)https://www. ...

  5. java线程占用的空间_linux服务器查询java线程占用的资源-Go语言中文社区

    1.使用top命令 ,查询java进程 比如选择86184这个进程 2.用 top -H -p 86184  ,查询该进程下的线程资源 3.使用jstack 86184 > jstack.txt ...

  6. linux java缓存失效_转载:Linux服务器Cache占用过多内存导致系统内存不足最终java应用程序崩溃解决方案...

    原文链接: https://blog.csdn.net/u014740338/article/details/66975550 问题描述 Linux内存使用量超过阈值,使得Java应用程序无可用内存, ...

  7. linux 优化内存分配,Linux性能优化 第三章 性能工具:系统内存

    3.1内存性能统计信息 3.1.1内存子系统和性能 和CPU相比,内存的读写速度都大大落后于CPU.为了弥补这个差距,通常CPU会采用高速缓存的机制(高cache). 3.1.2内存子系统(虚拟存储器 ...

  8. 服务器临时文件无法删掉,win10系统临时文件删不掉的解决教程

    win10系统运行过程中会产生很多临时文件,过多会占用磁盘内存,影响电脑运行速度.有用户通过使用系统自带的磁盘清理工具来删除文件,发现怎么也上不删不掉,如何解决?不要担心,带着此疑问,小编来告诉大家解 ...

  9. 服务器内存大小作用,服务器内存一般多大,服务器用什么内存|Crucial(英睿达)...

    所以服务器内存,可以看做普通内存进行了技术升级,使之更加安全稳定.于是我们可以了解到,服务器内存上拥有的技术ECC.Chipkill.热插拔.register寄存器等功能. 许多人在购买内存产品的时候 ...

  10. linux修改java占用端口号_Linux端口被占用、查看

    一.知道端口号,直接查找进程ID,杀掉进程 1.知道端口号,查看是否被占用,比如说知道jboss用的是8080端口,那就直接使用命令: netstat -tln | grep 8080 netstat ...

最新文章

  1. UpSetR 关联的 venneuler 包安装笔记
  2. csdn如何自定义博客栏目
  3. Linux如何关机与关机命令祥解
  4. visualvm远程监控jvm_8款JVM性能调优监控工具(提高开发效率)
  5. catia v5r24 计算机id,catia v5r24 r25 r26安装教程.ppt
  6. 国内唯一入选云厂商——阿里云入选 2021 Gartner APM 魔力象限
  7. MySQL Performance-Schema(一) 配置篇
  8. .Net转Java自学之路—SpringMVC框架篇八(RESTful支持)
  9. [VJ][bfs]Catch That Cow
  10. 使用CSS样式,制作六边形
  11. groupdel 删除组_如何在Linux中删除组– groupdel命令
  12. 基于HT for Web的3D树的实现
  13. 电力系统同步发电机励磁系统的建模与仿真
  14. 【信号与系统】DTFT离散时间傅里叶变换
  15. Android端投影演示方案
  16. Silvaco仿真入门
  17. 关于认识五线谱和简谱的基础知识
  18. 文学杂谈001--《遥远的救世主》
  19. VC的血与泪,最难尽调的是人性————失败风投案例分析
  20. cmake添加pthread外部库方法

热门文章

  1. Citrix MCS桌面管理技术解读
  2. javascript二级省市select联动菜单
  3. 企业机房升温-谁之过?
  4. 《Visual Studio Hacks 》读书笔记 (七)
  5. php导入csv文件,PHP实现CSV文件的导入和导出类
  6. 2021年河北高考生成绩排名查询,2021年河北省高考报名人数、录取分数线、河北省最好大学排名统计[图]...
  7. python kmeans聚类_K-means聚类算法的Python实现
  8. 求合体电脑版_网红界宋祖儿找了个年轻版言承旭当男友,一张合照就收割百万cp粉...
  9. PHP+MySQL实现读写分离
  10. 计算机软件水平考试程序员之程序设计知识点汇总,计算机软件水平考试《程序员》复习知识点(5)...