linux命令o---oom

参考文档:https://www.jianshu.com/p/20adbfb8016f

1、当系统内存不足时OOM就会被触发
执行grep -i “kill” /var/log/messages* 如果打印如下信息,则说明程序被Linux OOM Killer杀掉了
kernel: Memory … out of memory: Kill process …

2、当系统内存不足时,out_of_memory()就会被触发

3、cat /proc/sys/vm/panic_on_oom
这个值为 0 表示在OOM时系统执行OOM Killer
这个值为 1 表示在OOM时系统会panic(恐慌)

# sysctl是临时生效
# /etc/sysctl.conf是永久生效
sysctl -w vm.panic_on_oom=1
sysctl -w kernel.panic=10 # 表示10s后重启
echo “vm.panic_on_oom=1” >> /etc/sysctl.conf
echo “kernel.panic=10” >> /etc/sysctl.conf

4、如果cat /proc/sys/vm/panic_on_oom设置为1,则当发生OOM 时,cat /proc/pid/oomscore/proc/{pid}/oom_score值越大则越容易被杀掉(重启) 注意:/proc/pid/ooms​core值越大则越容易被杀掉(重启)注意:/proc/{pid}/oom_score就是计算进程使用的内存占"可用内存"的百分比

5、cat /proc/sys/vm/overcommit_memory,这个文件的值表示了Linux如何控制内存分配的行为.
这个值为 0(默认值), 表示系统允许Overcommit内存,但是有些限制. 这一般意味着kernel会基于空闲的swap空间、空闲的RAM内存和cache空间,这些空间可以随时被cleared.
这个值为 1, 表示kernel允许分配更多的内存(多余系统中已经存在的内存),而且不会抛出异常. malloc()操作总是返回true
这个值为 2, 表示kernel拒绝 >= 可用的swap和物理内存的某个百分比(overcommit_ratio,默认为50)的内存分配请求.

6、overcommit_ratio 可以请求内存的百分比
假设物理内存为4G,并且没有swap空间, 现在我们将 vm.overcommit_memory 设置为 2, 那么可以请求的内存就变为 4G50% = 2G .
然后我们将 vm.overcommit_ratio 设置为 100, 那么可以请求的内存就变为 4G
100% = 4G

linux命令o---oomlinux命令o---oom 学无止境966 发布了181 篇原创文章 · 获赞 6 · 访问量 7577 私信 关注
上一篇:Linux防暴力破解


下一篇:Linux一键部署oracle安装环境脚本