Linux 有一个 OOM killer 策略用于保护操作系统,防止在内存大量占用时,系统没有足够资源运转的问题。但有时候我们的程序的正常运行就是需要大量的内存,宁愿系统稍微卡顿一会,也不想被系统强制关闭。
方法一
找到进程id,比如我这里是 12718。
设置进程的 oom_adj 数值即可。
[root@qijing ~]# cat /proc/12718/oom_adj
0
[root@qijing ~]# echo -17 > /proc/12718/oom_adj
[root@qijing ~]#
[root@qijing ~]#
[root@qijing ~]# cat /proc/12718/oom_adj
-17
这里的 -17
标识禁用 OOM 策略。
方法二
把整个系统的 OOM 策略都给去掉:
[root@qijing ~]# sysctl -w vm.panic_on_oom=1
vm.panic_on_oom = 1
[root@qijing ~]# sysctl -p
vm.swappiness = 0
kernel.sysrq = 1
net.ipv4.neigh.default.gc_stale_time = 120
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
网友评论