|
|
爱跑步的草稿纸 · 索尼再购50%股份 ...· 5 月前 · |
|
|
悲伤的茄子 · 捷克旅游报价费用_捷克自由行线路_捷克旅游攻 ...· 6 月前 · |
|
|
爱旅游的汽水 · 婉儿别闹图片ps艺术字体-婉儿别闹图片ps字 ...· 6 月前 · |
|
|
从容的米饭 · 金立手机(MTK平台)手机串号修复教程-百度经验· 7 月前 · |
|
|
失恋的滑板 · springmvc配置MappingJack ...· 11 月前 · |
我的个人网站后台使用的是 MySQL 5.7版本,前段时间经常被oom-kill,借助5.7的新特性,经过一番排查,终于抓到这只鬼。
我的网站前段时间经常时不时就抽风一下,提示数据库无法连接,提示:
建立数据库连接时出错
本想反正是个人网站,挂就挂了,无所谓啦;也可能是VPS配置太低,访问量一大就容易出问题,忍忍算啦。
后来启荣大师说了一句话:看那木匠做的烂门 😓(⊙﹏⊙)b
于是下决心解决问题,不能再被鄙视啦,作为一个DBA,不能容忍数据库无缘无故挂掉,哪怕是个人VPS也不行 O(∩_∩)O~
首先,加了个cron任务,每分钟自动检测mysqld进程是否存活,如果没有,就启动之。这也是我们在企业里解决问题的指导思想: 尽快找到问题,但在还没确认问题之前,优先保证服务可用性,不管你用啥方法。
接下来,再看MySQL自身的日志,看看能不能找到什么线索。然并卵,啥也没找到,应该是被异常kill的,所以只有mysqld启动过程记录,并没有异常关闭的过程记录。
再排查系统日志,终于看到mysqld进程因为OOM给kill了:
图1
可以看到,mysqld进程消耗了最多内存,被oom-killer选中,给干掉了。
既然是OOM,那我们再看下当时系统整体内存消耗情况:
图2
是不是有明显的内存泄露迹象?不清楚的同学可以先看下面这篇文章普及下:
交代下,我的MySQL版本是:
看视图的名字,就知道这可以帮助我们分别从 账号 (包含授权主机信息)、 主机、线程、用户 (不包含授权主机信息)、 整体全局 等多个角度查看内存消耗统计。
除了内存统计,还有和事务、复制相关的一些视图,并且原来有些视图也进一步增强。
在MySQL 5.7中,还集成了sys schema,关于sys schema大家可以看本文下方的推荐链接。sys schema主要是对Information_schema以及Performance_Schema的视图进一步增强处理,提高结果的可读性。比如,我们可以查看当前实例总消耗的内存,以及内存主要由哪些部分给占用了,也可以透过sys schema来查看:
图6
建议大家应该花些时间好好再深入理解下I_S、P_S、sys schema,对我们这些非底层代码的MySQL DBA而言,这些都是很好的辅助手段。
原创声明,本文系作者授权云+社区发表,未经许可,不得转载。
如有侵权,请联系 yunjia_community@tencent.com 删除。
|
|
从容的米饭 · 金立手机(MTK平台)手机串号修复教程-百度经验 7 月前 |
我来说两句