RDS MySQL实例IOPS使用率较高的原因和解决方法
问题描述
阿里云RDS MySQL实例在日常使用中出现实例IOPS使用率较高的情况,本文将介绍造成该问题的常见原因及其解决方法。
问题原因
常见的问题原因如下所示:
- 实例规格较小。
实例内存满足不了需要缓存的数据,导致产生大量的物理IO,建议升级实例配置。 - 查询执行效率低。
解决方案
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
您可以通过以下方法来解决IOPS使用率高的问题:
一键诊断
推荐您使用该方式进行处理。
注意:您也可以生成实例诊断报告,分析处理问题,详情请参见诊断报告。
- 登录RDS控制台。
- 单击实例列表,单击目标实例ID。
-
选择自治服务>一键诊断。
-
查看当前实例活跃会话,确认SQL语句中执行的时间较长且状态为“sending data”。
-
勾选该会话,单击优化,通过优化中的建议,根据您实际情况做出相应优化,例如是否需要创建索引。
-
若没有直接给出优化建议,单击左侧导航栏的慢SQL,结合会话列表和慢SQL信息进行优化。
结束问题查询
您可以通过DMS控制台上的实例会话或命令查询或结束问题查询,建议您结束物理读(Physical_sync_read和Physical_async_read)高的查询。
说明:RDS实例在连接数满的情况下,无法通过DMS或者MySQL命令行工具连接登录实例,建议您先在RDS控制台的参数设置中将wait_timeout参数(单位秒)设置为比较小的值(比如60),让RDS实例主动关闭空闲时间超过60秒的连接,以便稍后可以通过DMS或者MySQL命令行工具连接访问实例。
通过实例会话结束问题查询
注意:需要业务应用先停止提交问题查询的操作,否则会出现不断重连的情况。
在一键诊断的会话管理页面。选中目标会话,单击结束选中会话即可。
通过命令行结束问题查询
- 通过DMS连接实例,详情请参见通过DMS登录RDS MySQL。
- 执行
show processlist;
SQL语句查询,查看当前执行的查询语句。
说明:若当前执行会话比较多,您也可以执行
show full processlist;
语句进行查询。 - 执行以下SQL语句,结束相关会话。
kill [$ID]
说明:[$ID]为上一步查询结果中ID列的值。
通过SQL诊断功能优化查询
- 通过DMS控制台登录实例。
- 单击页面上方的 ,选择对应的库。
- 将查询语句粘贴到SQL窗口,单击SQL诊断,即可得到优化建议。
- 根据您实际情况,选择优化建议进行处理。例如添加索引,确认执行查询成本会大幅减少。
适用于
- 云数据库RDS MySQL版