OOM导致MySQL服务被kill案例一则

Stella981
• 阅读 543

看到这个 故障分析 | MySQL OOM 故障应如何下手,想起来几天前也遇到一次MySQL服务因为OOM被杀掉的情况,记录一下

背景:
一个测试环境,由于Centos系统上没有设置虚拟内存,运行的MySQL实例buffer_pool_size配置的有不合理,运行了一个较大的查询

现象:
前端工具执行某个sql,一点击执行,过几秒钟连接客户端显式断开MySQL连接,第一次没在意,以为是刚好遇到网络问题导致的。
因此又重新刷新连接,重新执行,然后又数据库连接又断开,于是又刷新连接,又执行又断开……,奇怪的是每次反复连接断开连接断开连接断开……
完全相同的现象反复几次之后,才意识到哪里好像的不对劲,难特么道谁在玩我?
感觉是MySQL服务被重启了,因为网络不可能总是在执行查询的时候出现故障,于是查看MySQL启动时间:

SELECT DATE_ADD(NOW(),INTERVAL -variable_value SECOND) AS startup_datetime 
FROM performance_schema.global_status WHERE variable_name = 'Uptime'

果不其然,从当时的时间点来看,刚刚启动了不到一分钟,看MySQL的errorlog,只是反复记录MySQL重启恢复,Starting crash recovery...,Crash recovery finished.

OOM导致MySQL服务被kill案例一则

MySQL自身的errorlog中是看不到什么问题了,只能拉出来系统日志,MySQL的服务进程竟然是OOM后被系统杀掉了,然后才回头追溯各种配置,/var/log/message

OOM导致MySQL服务被kill案例一则

后面其实还是有点疑惑,为什么没有吧这个OOM的信息记录到MySQL自己的error log中呢?mysql自己的error log也只记录了重启恢复的过程。
可能是,连MySQL自己都被杀掉了,谁来记这个日志呢。
不过好在是,mysqld进程被杀掉之后,一直在自动被唤醒,这下可以深刻地一直到mysql_safe进程的作用了,

OOM导致MySQL服务被kill案例一则

教训
包括数据库和操作系统在内,一些基础配置还是要做好的,MySQL的配置可以自己把控,虚拟内存究竟多大,专业的事交给专业的人,也是一个专业问题。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这