Linux OOM Killer机制 以及防止被OOM Killer杀死的方法_linux 设置 redis 内存 防止oom

Committed_AS:当前已经分配的内存大小

swap内存

默认值60,代表 当已使用的物理内存高于60%时,开始使用交换空间

[root@node01 redis-5.0.8]# sysctl -a| grep vm.swappiness 
vm.swappiness = 60

vm.swappiness = 0 
最大限度使用物理内存,然后才是 swap空间,即在内存不足的情况下–当剩余空闲内存低于vm.min_free_kbytes limit时,使用交换空间。 
在内存紧张时优先减少RAM里文件系统缓存的大小,而非使用swap空间,这是一种提高数据库性能的推荐做法。

vm.swappiness = 1 
内核版本3.5及以上、Red Hat内核版本2.6.32-303及以上,进行最少量的交换,而不禁用交换。

vm.swappiness = 10 
当系统存在足够内存时,推荐设置为该值以提高性能。

vm.swappiness = 60 
默认值

vm.swappiness = 100 
积极的使用交换空间。

对于内核版本为3.5及以上,Red Hat内核版本2.6.32-303及以上,多数情况下,设置为1可能比较好,0则适用于理想的情况下(it is likely better to use 1 for cases where 0 used to be optimal)

临时设置

# echo 10 > /proc/sys/vm/swappiness
OOM killer

上面说到overcommit_memory的默认值是0,在这种情况下,所有应用程序申请的内存总和是大于系统物理内存+swap,当大多数应用程序都消耗完自己的内存的时候,发现可用内存不足,这个时候就会触发OOM Killer,选择杀死一些进程来腾出空间保证系统正常运行。

参考内核源代码linux/mm/oom_kill.c。当发生oom时,调用bool out_of_memory(struct oom_control *oc),首先判断是否启用oom_killer。是否启用oom_killer是由oom_killer_disabled来决定的,先判断oom_killer_disabled的值,如果有值,则不会触发OOM机制;布尔型变量oom_killer_disabled定义在文件mm/page_alloc.c中,并没有提供外部接口更改此值,但是在内核中此值默认为0,表示打开OOM-kill。

下面是oom

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值