mysql超售_MySQL OOM 系列三 摆脱MySQL被Kill的厄运
前面两章,我们分析了Linux内存分配的策略以及Linux通过使用 OOM_Killer的机制解决了“超售”引起的风险,MySQL同其他的应用程序一样,在操作系统允许的范围内也是可以超售的,一般人理解,Innodb_buffer_pool必须小于实际物理内存,否则MySQL会启动失败。其实这是一个误区,这个不是MySQL层控制的,这个是操作系统(OS)层控制的,就是前面提到的/proc/sys/overcommit_memory控制OS是否允许“超售”。如果允许“超售”,则Innodb_buffer_pool可以远远超过实际的内存空间大小,但是这部分空间是没有使用的。我们可以做个小实验,见下图:
MySQL的Innodb_buffer_pool开了5G,但实际内存只有3G。
讲了这么多,现在言归正传,回到我们最早提到的RDS实例被OS Kill掉的问题上来,前面我们也提到了,一旦实例可用内存不足,MySQL一般都会成为OOM_Killer的首选目标。这里就涉及到两个问题:
1.为什么会内存不足?
2.如何让MySQL摆脱被Kill的厄运?
首先我们来看一下第一个问题。内存不足这个问题产生原因很多,但是主要就两个方面,第一个是MySQL自身内存的规划有问题。第二个就是一般部署MySQL的服务器,都会部署很多的监控或者定时任务脚本,而这些脚本往往缺少必要的内存限制,导致在高峰期的时候占用大量的内存,导致触发Linux OOM_Killer机制,MySQL就无辜牺牲了。
那如何才能让MySQL摆脱被Kill的厄运呢? MySQL被Kill的根源在于Linux超售的内存分配机制,前面也提到了,只要存在这种超售的机制,就不可能完全避免某一个应用程序被Kill的风险。那要使得MySQL一定不会被Kill掉,只能禁止操作系统超出实际内存空间的分配内存。但是前面我们也提过,对于部署了MySQL的服务器,我们不建议这么做,因为MySQL的很多内存都是刚开始申请了,并不是立即使用的,OS一旦禁止超售,这不仅对MySQL自身内存规划提出更苛刻的要求,同时也存在内存无法充分利用的问题。同时,MySQL的每个连接的私有内存是动态分配的,如果分配不到,就会直接导致服务器Crash,这样也会增加MySQL Crash的风险。
既然受限于操作系统,无法完全做到避免被Kill,那只能尽量降低MySQL被Kill的几率。我觉得至少可以做下面3个事情:
1)合理的规划MySQL的内存使用。
2)调整OOM_adj参数,将MySQL被OOM_Killer锁定的优先级降低。
3)加强内存的监控和报警,一旦报警,DBA应该迅速介入,Kill掉一些占用较多内存的连接。
这就是微学网-程序员之家为你提供的"MySQL OOM 系列三 摆脱MySQL被Kill的厄运"希望对你有所帮助.本文来自网络,转载请注明出处:http://www.weixuecn.cn/article/3877.html
mysql超售_MySQL OOM 系列三 摆脱MySQL被Kill的厄运相关推荐
- mysql数据库内存分配_MySQL OOM 系列一 Linux内存分配
RDS(网易云关系数据库服务)上线已经有一段时间,陆续不断有产品迁入到了RDS中,在线上运维的过程中,也遇到了一些曾经没有考虑到,或者考虑的不全的东西.后续有时间可以分享给大家. 今天想提到的是线上一 ...
- mysql终端_MySQL之终端(Terminal)管理MySQL
前言:MySQL有很多的可视化管理工具,比如"mysql-workbench"和"sequel-pro-". 现在我写MySQL的终端命令操作的文章,是想强化一 ...
- mysql 管理instance_MySQL从零开始——第三章 MySQL体系结构
一.数据库和数据库实例的概念 在数据库领域中有2个词很容易混淆--数据库(database)和实例(instance) 1.数据库 物理操作系统文件或其他形式文件类型的集合.在MySQL数据库中,数据 ...
- mysql和mariadb对比_MySQL并发复制系列三:MySQL和MariaDB实现对比
MariaDB 10通过@@binlog_commit_wait_count and @@binlog_commit_wait_usec 两个参数设置,既事务commit阶段的时候至少等binlog_ ...
- mysql varchar 非空判断_工资从1万到3万,你还差mysql数据库优化之系列三
查询性能的优化 优化查询分析的步骤: 1.应用查询是否检索超过需要的数据 2.mysql服务器是否在分析超过需要的数据 正确使用索引: 1.like语句操作 一般不使用%或_开头例如: select ...
- mysql创建bit类型报错_MySQL入门(三)——MySQL数据类型
MySQL的数据类型包括整数类型.浮点数类型.定点数类型.日期和时间类型.字符串类型和二进制数据类型.不同数据类型决定了数据的存储格式.有效范围和相应的限制. 1.整数类型 MySQL支持的整数类型如 ...
- guests mysql权限_MySQL降权运行之MySQL以Guests帐户启动设置方法
MySQL安装到Windows上,默认是以SYSTEM权限运行,如下图: SYSTEM是超级管理员.不是必须,不推荐用此权限运行任何程序. 本文将演示如何在GUEST帐户下运行MySQL. 第一步:建 ...
- 从mysql到大数据(三)--mysql数据库建模一常用数据类型及引擎
数据库的安装请自行百度.如果你想直捣黄龙练查询,没有表没有数据是不能实现的.我们从建表开始学习.但要知道,我们所有东西都是了解,学习不要有压力,不要必须要求记什么,当然,如果你不累可以记,记不住也没关 ...
- mysql mof提权_三、mysql 之mof提权学习
一.测试环境 win2003 + phpnow 二.使用条件 mysql + root权限 三.工具准备 (1)工具1: 准备好mof提权脚本(具体mof脚本,已上传网盘) (2)工具2: 准备好菜刀 ...
最新文章
- 陈雷教授在线受聘清华大学杰出访问教授
- Oracle 11g下加密表空间的使用
- css 相对定位与绝对定位
- 【使用技巧】【图像编辑和处理】将多幅图片放到一块方便对比
- oracle临时表空间最大多大,Oracle临时表空间过大解决方法
- 统计学(网易云可汗学院公开课笔记)
- 我的世界python——方块朋友(方块设置移动路径getline)
- Unity 事件中心
- 企业怎么制作网站?怎么制作网站教程步骤
- OpenCV 图片去水印(不需要自己做水印模板)
- 【收藏】eos是什么币?如何购买和储存eos币 —— 教科书式操作
- C++中调用MatLab接口等
- VM-CtenOS-8+Linux-8+LANMP环境中安装phpMyAdmin
- 警告 [http-nio-8080-exec-4] org.springframework.web.servlet.DispatcherServlet
- matlab励磁电路图,发电机的励磁方法及工作原理
- visual studio STM32上位机开发 LED上位机
- 中兴zxr10路由器重启命令_中兴ZXR10系列路由交换机用户、命令行手册
- 华容道的求解算法重写
- TWS蓝牙耳机哪些品牌好?TWS蓝牙耳机品牌排行榜
- 金融工程利率期限结构matlab,2016年武汉大学金融工程实验报告固守内容+利率期限结构及MATLAB应用...