更新时间:2025-04-23 gmt 08:00
内存使用超限风险与优化-j9九游会登录
rds for mysql内存说明
rds for mysql的内存大体可以分为global级的共享内存和session级的私有内存两部分:
- 共享内存是实例创建时根据参数值分配的内存空间,并且是所有连接共享的。
- 私有内存用于每个连接到mysql服务器时才分配各自的缓存,且只有断开连接才会释放。
低效的sql语句或数据库参数设置不当都可能会导致内存利用率升高,遇到突发业务高峰时,可能会导致云数据库内存oom(out of memory)。
场景描述
rds for mysql实例在16:30分内存使用率突增,触发oom后实例重启。
原因分析
- 查看内存利用率监控指标,实例的内存使用率在16:30左右率突增,触发oom后实例重启,内存使用率骤降。
图1 内存利用率
- 查看该时间段慢sql数监控指标,确认该时间段慢sql数量突增。
图2 慢sql数
- 查看磁盘吞吐相关指标,发现磁盘此时有大量读写操作。
图3 磁盘吞吐
- 分析对应时间点的慢日志记录,该时间点有大量的多值批量插入语句,该插入方式会导致每个会话申请较多的session级内存,并发高,很容易引起实例oom。
图4 慢日志
j9九游会登录的解决方案
- 针对多值插入方式引起的oom,建议减少单次插入数据量,分多次插入,且及时断开重连会话以释放内存。可执行show full processlist查看是否有明显占用内存高的会话。
- 合理设置session级内存参数大小,可大体根据全局内存 会话级内存*最大会话数来预估可能最大的内存。注意开启“performance_schema”也会带来内存开销。
- 升级实例规格,将内存利用率维持在合理范围,防止业务突增导致实例oom。
相关文档
意见反馈
文档内容是否对您有帮助?
提交成功!非常感谢您的反馈,我们会继续努力做到更好!
您可在查看反馈及问题处理状态。
系统繁忙,请稍后重试
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨