正文
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