iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >【mysql】MySQL CUP过高如何排查?
  • 249
分享到

【mysql】MySQL CUP过高如何排查?

mysql数据库java 2023-09-08 21:09:09 249人浏览 安东尼
摘要

文章目录 一. 问题锁定二. QPS激增会导致CPU飘高三. 慢SQL会导致CPU飘高四. 大量空闲连接会导致CPU飘高五. MySQL问题排查常用命令 一. 问题锁定 通过top命令查

文章目录

一. 问题

在这里插入图片描述

通过top命令查看服务器CPU资源使用情况,明确CPU占用率较高的是否是Mysqld进程,如果是则可以明确CUP飘高的原因就是mysql数据库导致的。

二. QPS激增会导致CPU飘高

分析:
在这里插入图片描述

(引用网图)
在有监控工具的情况下,通过查看CPU利用率曲线图和QPS曲线图进行对比,如果CPU曲线图和QPS曲线图波动情况基本保持一致,出现CPU过高则必然和QPS激增有关系,至此可以明确CUP过高是QPS上升导致。反之,如果CUP曲线图对比QPS曲线图有不同步的峰值抖动,则说明在QPS未明显激增的情况下,CPU出现飘高,则大概率跟慢sql有关,可以进行后续的慢SQL排查分析。
解决(依据情况选用以下办法):
● 如果是实际业务激增导致则可以通过资源扩充,满足业务激增的业务需求。
● 找到具体激增的查询所对应应用系统的接口,进行限流控制,以保护数据库并发访问量。
● 应用采用读写分离,降低单点访问压力。
● 查看SQL是否存在循环插入或更新的情况,改动批量操作。
备注:
● 如果没有监控工具协助QPS分析的情况下,可以通过show global status like ‘Questions’ 和show global status like 'Uptime’查询,将两者相除得到就是QPS值。

三. 慢SQL会导致CPU飘高

分析(通过show processlist)
在这里插入图片描述

通过show processlist查看当前MySQL线程运行情况,主要通过 Time 连接时间和State当前SQL所处的状态来分析慢SQL,一般情况下如果存在Sending data说明该查询较慢,可以将info中的SQL复制出来通过explain查看详细的执行计划进行分析。
分析(通过MySQL自带的慢SQL日志功能)
通过root登录数据库开启慢SQL查询日志,set global slow_query_log = ‘ON’,并设置慢SQL过滤时间set global long_query_time = 1(超过1秒视为慢SQL),指定慢SQL日志文件存放路径set global slow_query_log_file = ‘/var/lib/mysql/test_1116.log’。通过持续观察该慢SQL记录日志文件,查找出具体的慢SQL复制出来通过explain查看详细的执行计划进行分析。
解决(依据情况选用以下办法)
● 紧急处理先通过 kill process id,先kill对应线程,缓解问题。
● 无索引或者索引失效,新建有效索引或者优化SQL语句。
● SQL中有大量聚合操作:简化SQL,将逻辑提炼到业务代码中;聚合操作异步化或预处理。
● SQL返回的数据过多:分页查询。
● 读写较多锁竞争激烈:分库分表或读写分离。

四. 大量空闲连接会导致CPU飘高

分析:
在这里插入图片描述

通过 show full processlist 查看Comand 有大量的Sleep,再根据Time查看装填时间是否很长,如果存在大量长时间睡眠线程占用数据库连接,会导致数据库的吞吐量下降,进而导致阻塞也会引发CPU飘高的现象。
解决:
● 修改mysql配置文件中的 wait_timeout 空闲等待时间,值越小则相对空闲线程就会越少,重启mysql生效。
● 也可以通过 set global wat_timeout=xx 方式热修改该参数。

五. MySQL问题排查常用命令

1 SQL 执行计划,进行SQL执行分析。
explain + sql 。
在这里插入图片描述

2 查看数据库当前执行线程状态
show full processlist : 其中重点字段包括Comand 、Time 、State、Info,可以查看当前所有连接线程中命令、持续时间、状态、对应的SQL信息。
5.3 查看当前运行的所有事务
在这里插入图片描述

select * from infORMation_schema.INNODB_TRX : 在执行结果中可以看到是否有表锁等待或者死锁,如果有死锁发生,可以通过下面的命令来杀掉当前运行的事务:KILL trx_mysql_thread_id 。
5.4 查看当前出现的锁
select * from information_schema.INNODB_LOCKS:在改结果中可以看到锁的类型、所属事务ID、锁级别、锁模式等信息。
5.5 查看死锁
SELECT b.trx_state, e.state, e.time, d.state AS block_state, d.time AS block_time
, a.requesting_trx_id, a.requested_lock_id, b.trx_query, b.trx_mysql_thread_id, a.blocking_trx_id
, a.blocking_lock_id, c.trx_query AS block_trx_query, c.trx_mysql_thread_id AS block_trx_mysql_tread_id
FROM information_schema.INNODB_LOCK_WAITS a
LEFT JOIN information_schema.INNODB_TRX b ON a.requesting_trx_id = b.trx_id
LEFT JOIN information_schema.INNODB_TRX c ON a.blocking_trx_id = c.trx_id
LEFT JOIN information_schema.PROCESSLIST d ON c.trx_mysql_thread_id = d.id
LEFT JOIN information_schema.PROCESSLIST e ON b.trx_mysql_thread_id = e.id
ORDER BY a.requesting_trx_id;
5.5 查看InnoDB状态
SHOW ENGINE INNODB STATUS。

来源地址:https://blog.csdn.net/MS_SONG/article/details/132249452

您可能感兴趣的文档:

--结束END--

本文标题: 【mysql】MySQL CUP过高如何排查?

本文链接: https://www.lsjlt.com/news/400635.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 【mysql】MySQL CUP过高如何排查?
    文章目录 一. 问题锁定二. QPS激增会导致CPU飘高三. 慢SQL会导致CPU飘高四. 大量空闲连接会导致CPU飘高五. MySQL问题排查常用命令 一. 问题锁定 通过top命令查...
    99+
    2023-09-08
    mysql 数据库 java
  • NodeJs内存占用过高如何排查
    这篇文章给大家介绍NodeJs内存占用过高如何排查,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。问题起因最开始是因为一个定时功能上线后,线上的容器自动进行了扩容,由于 NodeJs 服务本身只有一些接口查询和 sock...
    99+
    2023-06-15
  • MySQL 行锁超如何排查
    MySQL 行锁超如何排查,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 一、大纲#### 20191219 ...
    99+
    2024-04-02
  • php mysql如何查询排名
    本篇内容主要讲解“php mysql如何查询排名”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php mysql如何查询排名”吧!php mysql查询排名的方法:1、通过SQL语句对所有用户进...
    99+
    2023-06-25
  • MySQL占用CPU过高,排查原因及解决方案
    目录一、mysql中的wait_timeout坑1、第一种修改方式 需重启MySQL(6.5为例)2、第二种修改方式 不需重启MySQL(数据库重启就失效)二、排查有没有地方占用SQL资源过多其中state的状态十分关键...
    99+
    2022-12-22
    MySQL占用CPU MySQL占用CPU过高 MySQL占用CPU原因
  • 如何排查MySQL死锁警告
    本篇内容介绍了“如何排查MySQL死锁警告”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 故障背...
    99+
    2024-04-02
  • 分享MySQL生产库内存异常增高的排查过程
    目录修改performance_schema打开内存监控查找内存消耗统计事件消耗内存统计线程消耗内存定位具体SQL    近期频繁收到一个My...
    99+
    2024-04-02
  • MySQL DeadLock故障排查全过程记录
    【作者】 刘博:携程技术保障中心数据库高级经理,主要关注Sql server和Mysql的运维和故障处理。 【环境】 版本号:5.6.21 隔离级别:REPEATABLE READ 【问题描述】 接...
    99+
    2024-04-02
  • Oracle怎么排查CPU占用过高的排查
    本篇内容主要讲解“Oracle怎么排查CPU占用过高的排查”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle怎么排查CPU占用过高的排查”吧!  CPU...
    99+
    2024-04-02
  • mysql如何实现查询并排序
    本篇内容主要讲解“mysql如何实现查询并排序”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql如何实现查询并排序”吧! 在m...
    99+
    2024-04-02
  • mysql如何in查询操作排序
    本文将为大家详细介绍“mysql如何in查询操作排序”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“mysql如何in查询操作排序”能够给你意想不...
    99+
    2024-04-02
  • 如何通过索引提升PHP与MySQL的多语言查询和高性能排序?
    在开发多语言网站时,经常需要进行多语言查询和排序操作。而PHP和MySQL是常用的开发语言和数据库,如何通过索引提升多语言查询和高性能排序成为了一个关键问题。本文将通过具体代码示例介绍如何优化和加速这些操作。使用合适的字符集和校对规则在My...
    99+
    2023-10-21
    索引 (Index) 多语言查询 (Multilingual query) 高性能排序 (High-performanc
  • MySQL排查慢查询SQL
    根据MySQL自带慢日志功能定位慢SQL 1、查询有关query的相关变量: show global variables like '%quer%';  参数解释: log_queries_not_using_indexes:是否记...
    99+
    2023-09-05
    mysql sql 数据库
  • 【Java】 服务器cpu过高如何排查和解决?
    文章目录 前言一、常见能够引起CPU100%异常的情况都有哪些?二、服务器CPU使用率飙升异常,黄金4步排查法三、排查 CPU 故障的常用命令四、什么场景会造成 CPU 低而负载确很高呢?五、...
    99+
    2023-09-01
    java 服务器 开发语言
  • mysql连接数被打满如何排查
    当MySQL连接数被打满时,可以按照以下步骤进行排查: 查看数据库连接数:通过执行以下命令查看当前连接数是否已经达到了MySQL的...
    99+
    2024-04-09
    mysql
  • 如何提高MySQL查询速度
    本篇文章为大家展示了如何提高MySQL查询速度,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。  提高MySQL查询速度有哪些策略  1.表设计一定要优化,冗余数据最...
    99+
    2024-04-02
  • 如何提高mysql查询效率
    今天小编给大家分享一下如何提高mysql查询效率的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。数据库设计优化数据库设计是My...
    99+
    2023-07-06
  • Mysql中如何指定顺序排序查询
    小编给大家分享一下Mysql中如何指定顺序排序查询,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!实例如下前端主要用Vue框架,要...
    99+
    2024-04-02
  • 如何提高mysql的查询速度
    这篇文章主要讲解了“如何提高mysql的查询速度”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何提高mysql的查询速度”吧! ...
    99+
    2024-04-02
  • Java程序占用CPU过高排查
    使用 top 命令查看高CPU进程,执行命令后可以按 1 键查看各CPU 内核负载情况。CPU使用率主要看us、sy两个指标。 假设 10760 是一个高CPU的进程。 使用 top -H ...
    99+
    2023-09-22
    jvm jstack Powered by 金山文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作