云数据库MySQL实例的内存使用率告警
更新时间:
问题描述
在RDS管理控制台的报警页面,MySQL实例出现内存使用率告警。
问题原因
- 监控指标设置不合理。
- 实例内存使用出现异常。
解决方案
检查实例的内存使用情况
登录该实例,执行如下SQL语句,检查当前实例的内存使用情况。
show variables where variable_name in ('innodb_buffer_pool_size', 'innodb_log_buffer_size', 'innodb_additional_mem_pool_size', 'key_buffer_size', 'query_cache_size');
系统返回类似如下,本文以内存规格为240MB的RDS实例为例。
+---------------------------------+-----------------+
| Variable_name | Value |
+---------------------------------+-----------------+
| innodb_additional_mem_pool_size | 2097152 |
| innodb_buffer_pool_size | 67108864 |
| innodb_log_buffer_size | 1048576 |
| key_buffer_size | 16777216 |
| query_cache_size | 0 |
+---------------------------------+-----------------+
共返回 5 行记录,花费 342.74 ms.
监控指标设置不合理
检查innodb_buffer_pool_size参数,确认该参数值当前的大小。大部分内存占用告警,都是因为实例的缓冲池增长导致,而缓冲池的增长是正常的。所以这类报警属于监控指标设置不合理造成的误报。
云数据库 RDS MySQL 版的缓冲池默认使用实例内存规格的80%,在实例使用过程中势必会造成缓冲池内存占比的增加。当内存使用超过80%出现告警,且确认为缓冲池内存占用时,建议将监控指标设置为90%。有关监控指标的设置可参考配置报警规则。
内存使用出现异常
当出现内存使用率超过90%的告警时,一般考虑如下两方面。
- 确认是否存在Session过多的情况,如果空闲Session过多,需要评估空闲Session数量设置的是否合理。如何查看Session可参考MySQL官方文档。
- 确认是否单个Session占用过多的私有内存,主要排查创建临时表、sort或join等操作,这类操作会占用较多私有内存。
适用于
- 云数据库 RDS MySQL 版
文档内容是否对您有帮助?