Linux——》Out of memory:kill process

Linux OOM杀手机制解析
本文深入探讨了Linux系统中Out of Memory (OOM) 杀手机制的工作原理,包括其触发条件、处理流程及如何避免关键进程被误杀。通过实际案例分析,介绍了内存不足时系统如何决定牺牲哪些进程以保障系统稳定。

推荐链接:
    总结——》【Java】
    总结——》【Mysql】
    总结——》【Redis】
    总结——》【Kafka】
    总结——》【Spring】
    总结——》【SpringBoot】
    总结——》【MyBatis、MyBatis-Plus】
    总结——》【Linux】
    总结——》【MongoDB】
    总结——》【Elasticsearch】

1、操作

正常访问数据库

2、现象

mysql服务被linux系统kill掉

3、原因

    Linux 内核根据应用程序的要求分配内存,通常来说应用程序分配了内存但是并没有实际全部使用,为了提高性能,这部分没用的内存可以留作它用,这部分内存是属于每个进程的,内核直接回收利用的话比较麻烦,所以内核采用一种过度分配内存(over-commit memory)的办法来间接利用这部分 “空闲” 的内存,提高整体内存的使用效率。
    一般来说这样做没有问题,但当大多数应用程序都消耗完自己的内存的时候麻烦就来了,因为这些应用程序的内存需求加起来超出了物理内存(包括 swap)的容量,内核(OOM killer)必须杀掉一些进程才能腾出空间保障系统正常运行。
    用银行的例子来讲可能更容易懂一些,部分人取钱的时候银行不怕,银行有足够的存款应付,当全国人民(或者绝大多数)都取钱而且每个人都想把自己钱取完的时候银行的麻烦就来了,银行实际上是没有这么多钱给大家取的。

由于系统内存不足,触发 Linux 内核里的 Out of Memory (OOM) killer,OOM killer 会杀掉某个进程以腾出内存留给系统用,不致于让系统立刻崩溃。

4、解决

(1)增加系统内存,尽量保证内存充足
(2)在多实例应用部署时,需要注意对内存的分配。
(3)优化进程,使其占用内存降低
(4)使用oom_score_adj参数,这个参数会被计算入oom_score,可以避免进程被杀死(不推荐使用)。

5、其他

(1)查看系统日志文件

在/var/log/messages日志文件中有如下信息:Out of Memory: Killed process [PID] [process name]
在这里插入图片描述

(2)查看哪个进程被kill

最占用内存的进程

(3)系统内存不足的原因

  • 本身内存小 通常
  • 在多应用集中部署在一台机器上,管理不当或应用压力突增
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值