阿里云MySQL CPU 使用率高的原因及解决方法

作者阿里云代理 文章分类 分类:新闻快递 阅读次数 已被围观 1152

在日常使用 MySQL 实例的时候,可能会遇到 CPU 使用率过高甚至达到  100% 的情况。阿里云代理商就通过本文来分析造成CPU使用率过高的常见原因以及解决方法,来帮助用户能够及时的解决CPU使用率过高或者达到100% 的情况。




造成用户使用MySQL  CPU使用率过高的常见原因


系统执行应用提交查询(包括数据修改操作)时需要大量的逻辑读(逻辑 IO,执行查询所需访问的表的数据行数),所以系统需要消耗大量的 CPU 资源以维护从存储系统读取到内存中的数据一致性


注:大量行锁冲突、行锁等待或后台任务也有可能会导致实例的 CPU 使用率过高,但这些情况出现的概率非常低,本文不做讨论。

阿里云代理商通过一个简化的模型来说明系统资源、语句执行成本以及 QPS(Query Per Second 每秒执行的查询数)之间的关系:

  条件:应用模型恒定(应用没有修改)。

  avg_lgc_io:执行每条查询需要的平均逻辑 IO。

  total_lgc_io:实例的 CPU 资源在单位时间内能够处理的逻辑 IO 总量。

  关系公式:total_lgc_io = avg_lgc_io x QPS -- 单位时间 CPU 资源 = 查询执行的平均成本 x 单位时间执行的查询数量

解决方法

阿里云数据管理(DMS)工具中提供有几种可以辅助排查并解决MySQL 实例性能问题的功能:

1】实例诊断报告

2】SQL 窗口提供的查询优化建议和查看执行计划

3】实例会话

上述这几种功能中,实例诊断报告是我们进行排查以及解决 MySQL 实例的性能问题的最佳工具。不管是什么原因造成的 MySQL实例的性能问题,阿里云代理商都首先建议用户参考实例的诊断报告,尤其是诊断报告中的 SQL 优化、会话列表和慢 SQL 汇总分

MySQL 实例使用中避免出现 CPU 使用率达到 100% 的一般原则

1】通过设置 CPU 使用率告警,保证实例 CPU的使用率上有一定的冗余度

2】应用设计和开发过程中,要考虑查询的优化,遵守 MySQL 优化的一般优化原则,降低查询的逻辑 IO,提高应用可扩展性

3】新功能、新模块上线前,要使用生产环境数据进行压力测试(可以考虑使用阿里云 PTS 压力测试工具)

4】新功能、新模块上线前,阿里云代理商建议使用生产环境数据进行回归测试

5】建议经常关注和使用 DMS 中的诊断报告

本公司销售:阿里云、腾讯云、百度云、天翼云、金山大米云、金山企业云盘!可签订合同,开具发票。

我有话说: