RDS MySQL该如何查看消耗内存高的事件和线程?
内存是重要的性能参数,内存使用率过高会导致系统响应速度变慢,严重时内存会耗尽,实例会进行主备切换,导致业务中断。因此我们需要在内存异常升高时及时排查问题,避免影响业务。
1、登录RDS管理控制台,在页面左上角,选择实例所在地域。
2、找到目标实例,单击实例ID。在左侧导航栏中单击 参数设置。
3、将performance_schema参数值修改为ON,如果已经为ON请忽略此步骤。
提示:该操作会重启实例,造成连接中断,重启前请做好业务安排,谨慎操作。
a、单击performance_schema参数右侧的修改按钮,将值修改为ON,然后单击 确定。
b、单击页面右上角 提交参数,等待实例重启完成即可。
4、使用DMS或客户端连接MySQL实例,依次执行如下SQL语句,打开内存监控。
update performance_schema.setup_instruments set enabled = 'yes' where name like 'memory%';
select * from performance_schema.setup_instruments where name like 'memory%innodb%' limit 5;
注:该命令是在线打开内存统计,所以只会统计打开后新增的内存对象,打开前的内存对象不会统计,建议您打开后等待一段时间再执行后续步骤,便于找出内存使用高的线程。
5、您可以参考如下SQL语句统计事件和线程的内存消耗量,并进行排序展示。
a、统计事件消耗内存。
select event_name,
SUM_NUMBER_OF_BYTES_ALLOC
from performance_schema.memory_summary_global_by_event_name
order by SUM_NUMBER_OF_BYTES_ALLOC desc
LIMIT 10;
系统显示类似如下。
b、统计线程消耗内存。
select thread_id,
event_name,
SUM_NUMBER_OF_BYTES_ALLOC
from performance_schema.memory_summary_by_thread_by_event_name
order by SUM_NUMBER_OF_BYTES_ALLOC desc
limit 20;
系统显示类似如下。
6、找到问题事件或线程后,您可以排查业务代码和环境,解决内存高的问题。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云关系型数据库主要有以下几种:RDS MySQL版、RDS PostgreSQL 版、RDS SQL Server 版、PolarDB MySQL版、PolarDB PostgreSQL 版、PolarDB分布式版 。