1,OOM机制详解
一句话:内存不足,系统强制kill进程
Linux实战-2:内存不足触发Linux OOM-killer机制分析_invoked oom-killer-优快云博客
2,linux环境中 产品服务异常,排查是否触发oom
另外:当这个时间点系统用内存已经不足了,只要有进程去请求分配内存,就会触发oom,并且message日志在触发oom-killer的附近会打印当时系统占用快照(类似top命令看到的),您可以通过这个判断下当时什么进程占用多。
2.1 查看内存 free 是否占用小
free -m
2.2 查看系统日志
grep -i 'out of memory' /var/log/messages* //检查是否有进程被系统oom kil的记录
grep -i 'oom' /var/log/messages*
grep -A50 -i "out of memory" /var/log/messages* #详细查看大致是那个服务所占内存高
输出的日志,直接ai分析,查看内存情况
2.3 查看目前资源占用 top
根据oom日志中的服务,在top中寻找,基本是找到内存占用最高的那个,看RES数值。
使用top 查看内存方法
top
输入大写M
shift+E 可切换内存数值到MB,GB
如果任务名是java就无法判断是那个服务,可以用jps查看,具体进程对应服务
jps #查看具体是那个java进程占用大小
如果发现该进程平时RES数值占用 与 kill掉时内存占用 没什么太大差距,那么建议客户扩容。
如果内存占用差距过大,需要查看产品日志,看看那段时间具体什么任务在跑,是否是异常行为,不是就扩容。
另外:
查看系统重启时间:
last -5x reboot #数字五代表最近五次
who -d #查看最后一次重启
查看系统重启日志
grep "reboot" /var/log/syslog