如何处理Linux系统中内存不足的问题

1. 通过命令`free -m`查看当前Linux系统的内存使用情况,包括总内存数、已使用的内存数和空闲的内存数。这样可以对系统的内存状况有一个直观的了解。

2. 找出占用内存过高的进程。可以使用`top`命令查看内存占用情况,找出占用内存最高的进程并结束它。

        按shift+M使应用按内存使用率排序,定位到第一个使用内存最高的应用,并找到对应的PID。

        kill -15 pid,这种方式可以快速释放部分内存资源。

3. 如果发现buff/cache占用过高,可以考虑手动清缓存。执行以下命令需要root权限:

清理缓存的命令

- 清除pagecache:

echo 1 > /proc/sys/vm/drop_caches

- 清除回收slab分配器中的对象(包括目录项缓存和inode缓存):

echo 2 > /proc/sys/vm/drop_caches

- 清除pagecache和slab分配器中的缓存对象:

echo 3 > /proc/sys/vm/drop_caches

说明:

        /proc是一个虚拟文件系统,我们可以通过对它的读写操作作为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。也就是说我们可以通过调整/proc/sys/vm/drop_caches来释放内存。

0 – 不释放缓存

1 – 释放页面缓存

2 – 释放dentries和inodes

3 – 释放所有缓存

数字1是用来清空最近放问过的文件页面缓存

数字2是用来清空文件节点缓存和目录项缓存

数字3是用来清空1和2所有内容的缓存。

4.对于编译过程中出现的内存不足问题,也可以尝试优化编译参数,减小编译过程中的内存使用。

注意:

  实际项目中的经验告诉我们,如果因为是应用有像内存泄露、溢出的问题,从swap的使用情况是可以比较快速可以判断的,但free上面反而比较难查看。我觉得既然核心是可以快速清空buffer或cache,但核心并没有这样做(默认值是0),我们不应该随便去改变它。

  一般情况下,应用在系统上稳定运行了,free值也会保持在一个稳定值的,虽然看上去可能比较小。当发生内存不足、应用获取不到可用内存、OOM错 误等问题时,还是更应该去分析应用方面的原因,如用户量太大导致内存不足、发生应用内存溢出等情况,否则清空buffer,强制腾出free的大小,可能只是把问题给暂时屏蔽了,所以说一般情况下linux都不用经常手动释放内存。

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值