大量慢sql导致mysql服务器的cpu飙升到100%

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 大量慢sql/mysql/cpu 100%

故障原因

上午10:14左右出现大量慢sql导致mysql服务器的cpu飙升到100%

image.png


处理过程

阿里云查看性能趋势,发现在10:13:28cpu飙升到100%

image.png


排查思路:

8月1号阿里云临时把我们的IOPS调到了7000,一周后调回原值5000,

排查10:13:28附近的IOPS,为3581.5,并未达到峰值7000


image.png


查看扫描行数并未发现明显飙升


image.png

查看10:14:00之前5分钟内的sql洞察,在10:13:28秒左右并没有发现明显异常


image.png

在10:11:56出现一次比较明显的飙升,定位到以下查询语句

image.png


该sql在当时的执行时间大概在3秒左右,理论上不应该是这句sql引起的cpu飙升

继续排查慢日志明细,发现以下几句sql执行时间在12、3秒左右,执行开始时间和飙升发生时间比较接近,把这几句sql单独拿出来放在只读实例中执行都是一秒之内返回,目前来看不可能是单独的几条sql引起的cpu飙升,联系阿里云进行排查,那边给出的回复是并发量达到一定程度,导致主实例的buffer pool占满,拿不到free pages

优化思路为通过阿里云的数据库代理,自动对请求进行转发,写请求转发到主实例上,读请求转发到只读实例上,减少主实例上的大量读请求压力,目前对uat数据库设置了代理,将xxx-pro的uat环境连接地址改成了数据库代理地址,先在uat环境测试一下主流程是否可以正常执行,确保可以正常执行的情况下再对生产环境进行调整


暴露的问题

目前存在较多慢sql,部分慢sql单从sql层面优化空间不大


改进措施

目前发现访问量较大的慢sql主要集中在往来单位查询、台账查询和导出查询等业务相关的sql,已对uat环境的xxx-pro设置了数据库代理,计划在今天发版后对往来单位查询对应的xxx-data-service也使用数据库代理,需要验证下主流程是否可以正常执行

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
SQL 存储 关系型数据库
MySQL/SqlServer跨服务器增删改查(CRUD)的一种方法
通过上述方法,MySQL和SQL Server均能够实现跨服务器的增删改查操作。MySQL通过联邦存储引擎提供了直接的跨服务器表访问,而SQL Server通过链接服务器和分布式查询实现了灵活的跨服务器数据操作。这些技术为分布式数据库管理提供了强大的支持,能够满足复杂的数据操作需求。
88 12
|
2月前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
3月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
1115 2
|
4月前
|
SQL 分布式计算 关系型数据库
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
131 3
|
4月前
|
缓存 监控 负载均衡
提高服务器CPU使用率
提高服务器CPU使用率
445 7
|
4月前
|
存储 缓存 监控
如何提高服务器CPU性能?
如何提高服务器CPU性能?
483 3
|
5月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
279 5
|
8天前
|
存储 设计模式 监控
如何快速定位并优化CPU 与 JVM 内存性能瓶颈?
本文介绍了 Java 应用常见的 CPU & JVM 内存热点原因及优化思路。
|
2月前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
191 7
|
3月前
|
弹性计算 Kubernetes Perl
k8s 设置pod 的cpu 和内存
在 Kubernetes (k8s) 中,设置 Pod 的 CPU 和内存资源限制和请求是非常重要的,因为这有助于确保集群资源的合理分配和有效利用。你可以通过定义 Pod 的 `resources` 字段来设置这些限制。 以下是一个示例 YAML 文件,展示了如何为一个 Pod 设置 CPU 和内存资源请求(requests)和限制(limits): ```yaml apiVersion: v1 kind: Pod metadata: name: example-pod spec: containers: - name: example-container image:
430 1