操作系统物理内存耗尽,触发操作系统OOM Killer

当操作系统物理内存和交换空间不够用时,操作系统的OOM Killer机制(默认打开)就会选择性地杀死进程,那么它是怎样知道要先杀死哪个进程呢?其实Linux的每个进程都有一个oom_score(位于/proc/<pid>/oom_score),这个值越大,就越有可能被OOM Killer选中并杀死。

当一个进程被杀死时,这个信息记录在哪里?
当一个进程被OOM Killer杀死以后会向操作系统日志写入杀死的进程PID等信息,所以判断进程是否被OOM Killer,就可以通过搜索操作系统日志来得知。

DataPump进程被OOM Killer的日志:

messages:Dec 25 16:31:20 iZm5e9rq4aelxkngiw5xoqZ kernel: [ 5842]     0  5842  2235658  1685262    3606        0             0 DataPump
messages:Dec 25 16:31:20 iZm5e9rq4aelxkngiw5xoqZ kernel: Out of memory: Kill process 5842 (DataPump) score 402 or sacrifice child
messages:Dec 25 16:31:20 iZm5e9rq4aelxkngiw5xoqZ kernel: Killed process 5842 (DataPump), UID 0, total-vm:8942632kB, anon-rss:6739808kB, file-rss:1240kB, shmem-rss:0kB

搜索命令为:

grep -i 'Kill process' /var/log/messages

遇到此问题时,解决办法有以下几个:
增大ECS实例物理内存或者减少被杀死的进程分配的内存值。
检查ECS实例是否挂载了Swap交换分区( ECS实例默认不挂载Swap交换分区 ),
如果未挂载(阿里云ECS环境大多数OOM Killer的问题都因为未挂载Swap交换分区,相比性能,进程健康性更加重要)请搜索Linux挂载Swap交换分区的方法并自行挂载Swap交换分区。

linux系统文件通常在 /var/log 中下面是对下面常出现的文件进行解释

/var/log/message ---------------------------------------系统启动后的信息和错误日志
/var/log/secure ------------------------------------------与安全相关的日志信息
/var/log/maillog ------------------------------------------与邮件相关的日志信息
/var/log/cron ----------------------------------------------与定时任务相关的日志信息
/var/log/spooler ------------------------------------------与UUCP和news设备相关的日志信息
/var/log/boot.log -----------------------------------------守护进程启动和停止相关的日志消息
/var/log/wtmp ---------------------------------------------永久记录每个用户登录、注销及系统的启动、停机的事件
/var/run/utmp ---------------------------------------------记录当前正在登录系统的用户信息;
/var/log/btmp ----------------------------------------------记录失败的登录尝试信息。

  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值