记debian系统下一次内存优化过程

前言:当使用top命令的时候,发现系统内存占用比较高,达到87%,而系统实际上只是安装有docker,k8s,并未安装其他复杂应用。物理内存有16G,所以并非实际使用内存占用太高。所以考虑是部署问题或者其他问题,需要查证具体问题所在。

Linux下允许程序申请比系统可用内存更多的内存,这个特性叫Overcommit。

这样做是出于优化系统考虑,因为不是所有的程序申请了内存就立刻使用的,当你使用的时候说不定系统已经回收了一些资源了。

不幸的是,当你用到这个Overcommit给你的内存的时候,系统还没有资源的话,OOM killer就跳出来了。

为了保护重要进程不被oom-killer掉,我们可以:echo -17 > /proc/<pid>/oom_adj,-17表示禁用OOM

我们也可以对把整个系统的OOM给禁用掉:

sysctl -w vm.panic_on_oom=1 (默认为0,表示开启)

sysctl -p

参数/proc/sys/vm/overcommit_memory可以控制进程对内存过量使用的应对策略

当overcommit_memory=0 允许进程轻微过量使用内存,但对于大量过载请求则不允许(默认)

当overcommit_memory=1 永远允许进程overcommit

当overcommit_memory=2 永远禁止overcommit

Linux下这个选择策略也一直在不断的演化。作为用户,我们可以通过设置一些值来影响OOM killer做出决策。Linux下每个进程都有个OOM权重,在/proc/<pid>/oom_adj里面,取值是-1

猜你喜欢

转载自blog.csdn.net/jiao_zg/article/details/129911861