位置: 编程技术 - 正文

MySQL OOM 系列一 Linux内存分配(mysql m1)

编辑:rootadmin

推荐整理分享MySQL OOM 系列一 Linux内存分配(mysql m1),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql01,mysqlor,mysql m1,mysqlone,mysqlone,mysqlor,mysql01,mysql omm,内容如对您有帮助,希望把文章链接给更多的朋友!

RDS(网易云关系数据库服务)上线已经有一段时间,陆续不断有产品迁入到了RDS中,在线上运维的过程中,也遇到了一些曾经没有考虑到,或者考虑的不全的东西。后续有时间可以分享给大家。

今天想提到的是线上一个4G的RDS实例,发生了OOM(out of memory)的问题,MySQL进程被直接Kill掉了。在解释这个问题的时候,我们首先需要从Linux系统内存分配策略讲起。 一般写C语言程序,我们习惯使用malloc动态的申请内存空间(Java由JVM负责内存管理),malloc函数会向操作系统申请一段连续的内存单元,然后返回这段空间的起始地址。如果malloc函数返回为null则表示系统没有可分配的内存空间。这是我们的一般思维,当然这在某些操作系统中确实也是正确的(Solaris)。 但是Linux不是这样的,Linux的内存分配采取的是一种更加积极的分配策略,它假设应用申请了内存空间后并不会立即去使用它,所以允许一定量的超售,当应用真的需要使用它的时候,操作系统可能已经通过回收了其他应用的内存空间而变得有能力去满足这个应用的需求,简单的说,就是允许应用申请比实际可分配空间(包括物理内存和Swap)更多的内存,这个特性称为OverCommit。 这个特性在Linux操作系统里面也是可配的,可以通过设置/proc/sys/overcommit_memory为不同的值来调整OverCommit策略。 overcommit_memory可以取3个值:0:默认值,由Linux内核通过一些启发式算法来决定是否超售和超售的大小,一般允许轻微的超售,拒绝一些明显不可能提供的请求,同时做一些规则限制,比如不同用户overcommit的大小也不一样。 1:允许,不做限制的超售,当然这个也不是无限大,还受到寻址空间的限制,位系统最大可能只有4G,位系统大概T左右。 2:禁止,禁止超售,系统能够分配的内存不会超过swap+实际物理内存*overcommit_ratio,该值可以通过/proc/sys/vm/overcommit_ratio设置,默认%。

为了验证Linux的内存分配,我们用个小程序来测试一下:

MySQL OOM 系列一 Linux内存分配(mysql m1)

前者再通过malloc()申请了内存空间以后,并没有立即去使用它,而后者相反,每次申请完都立即用1去填充。我们来看看两个程序运行的结果。

这是在1G的RAM,M Swap的虚拟机上运行的结果,前者申请了远远超过实际内存的空间,后者并没有超过实际内存可用空间。这就验证了前面叙述的Linux的内存分配策略。本身这是一个系统的优化,无可厚非。但是我们知道,但凡“超售”都是基于不会有大量程序同时使用资源的假设,这显然也是有风险的。所以Linux又使用了一种OOM Killer(Out Of Memory killer)的机制,在系统可用内存(包括Swap)即将使用完之前,选择性的Kill掉一些进程以求释放一些内存。下一章我们重点讨论一下Linux OOM Killer的机制。

MySQL OOM 系统二 OOM Killer 这里就涉及到一个问题,到底Kill掉谁呢?一般稍微了解一些Linux内核的同学第一反应是谁用的最多,就Kill掉谁。这当然是Linux内核首先考虑的一种重要

MySQL OOM 系列三 摆脱MySQL被Kill的厄运 前面两章,我们分析了Linux内存分配的策略以及Linux通过使用OOM_Killer的机制解决了超售引起的风险,MySQL同其他的应用程序一样,在操作系统允许的范围

MySQL Slave 触发 oom-killer解决方法 最近经常有收到MySQL实例类似内存不足的报警信息,登陆到服务器上一看发现MySQL吃掉了%的内存,God!有时候没有及时处理,内核就会自己帮我们重启

标签: mysql m1

本文链接地址:https://www.jiuchutong.com/biancheng/347920.html 转载请保留说明!

上一篇:MYSQL数据库数据拆分之分库分表总结(mysql数据库数据备份)

下一篇:MySQL OOM 系统二 OOM Killer(mysql osc)

  • 待抵扣进项税额转入进项税额
  • 代开的增值税专票需要另外申报附加税吗?
  • 税务局开专票作废重开流程
  • 增值税纳税期限1日是什么意思
  • 小规模纳税人到底能不能收专票
  • 销售货物提供运输是否分别核酸的例题
  • 研发项目帐务处理方案
  • 缴纳印花税的会计凭证
  • 企业所得税缴纳时计提可以吗
  • 材料费发票税点
  • 固定资产怎么进行折旧处理
  • 金蝶k3如何设置凭证保存自动新增
  • 一般纳税人税收优惠政策有哪些2023年
  • 废旧物资回收经营范围
  • 业务招待费可以开专票吗
  • 递延所得税当期所得税费用
  • 工程结算审核程序
  • 筹建期结转损益吗
  • 购买汽车怎么抵扣增值税
  • 退货或者销毁处理
  • 以前年度损益调整会计分录
  • 增值税10000交多少税
  • 年终所得税汇算提示成本费用与实际取得发票有差异
  • 填报企业年报
  • 库存现金可以用于支付哪些钱
  • 处置其他权益工具投资会影响当期损益吗
  • 处理固定资产账务处理税率
  • 报销业务招待费属于什么现金流量项目
  • 已抵扣未认证的发票
  • 最新企业会计准则
  • 苹果手机上显示
  • 该内存不能为read,要终止程序
  • 鸿蒙怎么开启个性化桌面
  • 试乘试驾车入账分录
  • 现金结算的范围及内部控制
  • cpu和gpu性能对比
  • 北坡镇人民政府
  • the模板引擎
  • sbc奇思妙想
  • python的切片操作
  • 车间买的工具如何做会计分录
  • 用友t3财务报表导出
  • 企业发生的广告费应计入
  • 小微企业认定需要哪些资料
  • 个人所得税税率怎么算
  • 购进废旧物资进项税额
  • 投资管理公司怎么收费
  • 进项税额转出的所有会计分录
  • 主营业务收入主要反映企业销售商品或劳务获得的收入
  • 银行收到一笔款项企业尚未入账属于什么情况的未达账项
  • 社会团体收到财政拨款
  • 本月取得的发票入账后次月对方能红冲吗
  • 小规模纳税人认定标准2023年最新
  • 汇总帐凭证处理
  • 结账时如何划线进去
  • windowsxp能用pr吗
  • linux以root用户登录
  • bios密码忘记了要怎么重置
  • ubuntu20.04
  • ubuntu的安装步骤
  • windows7 读不了u盘怎么解决
  • linux+c
  • Linux中SSH的SCP传输命令运用详解
  • android edittext被系统键盘遮挡
  • shell基础教程
  • 自制u盘杀手
  • js的select()方法
  • 将光标定位于输入端
  • shell section
  • unity quaternion.angle
  • android摇一摇实现
  • Unity3d IOS 64 IL2CPP迁移之 AStarPath JosnFX 错误
  • 开发日记3雷火剑
  • js用于
  • TextWatcher实现一键清空EditText
  • python类中的函数必须加self吗
  • python读取一个文件并写入另一个文件
  • 国家税务局39号公告退税
  • 地方税务局发票管理所
  • 2021年小规模纳税人优惠政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设