MySQL数据库cpu飙升到500%的话他怎么处理?[通俗易懂]

MySQL数据库cpu飙升到500%的话他怎么处理?

大家好,又见面了,我是全栈君。

上一篇  mysql cpu 负载率超过理想值,解决方案总结

MySQL数据库cpu飙升到500%的话他怎么处理?

当 cpu 飙升到 500%时,先用操作系统命令 top 命令观察是不是 mysqld 占用导致的,如果不是,找出占用高的进程,并进行相关处理。

如果是 mysqld 造成的, show processlist,看看里面跑的 session 情况,是不是有消耗资源的 sql 在运行。找出消耗高的 sql,看看执行计划是否准确, index 是否缺失,或者实在是数据量太大造成。

一般来说,肯定要 kill 掉这些线程(同时观察 cpu 使用率是否下降),等进行相应的调整(比如说加索引、改 sql、改内存参数)之后,再重新跑这些 SQL。

也有可能是每个 sql 消耗资源并不多,但是突然之间,有大量的 session 连进来导致 cpu 飙升,这种情况就需要跟应用一起来分析为何连接数会激增,再做出相应的调整,比如说限制连接数等

操作如下:

1.执行 show processlist,看不出什么 学会用 Mysql show processlist 排查问题

 show processlist;

MySQL数据库cpu飙升到500%的话他怎么处理?[通俗易懂]MySQL数据库cpu飙升到500%的话他怎么处理?[通俗易懂]

2.问题排查

show full processlist 可以看到所有链接的情况,但是大多链接的 state 其实是 Sleep 的,这种的其实是空闲状态,没有太多查看价值

我们要观察的是有问题的,所以可以进行过滤:

-- 查询非 Sleep 状态的链接,按消耗时间倒序展示,自己加条件过滤
select id, db, user, host, command, time, state, info
from information_schema.processlist
where command != 'Sleep'
order by time desc 

这样就过滤出来哪些是正在干活的,然后按照消耗时间倒叙展示,排在最前面的,极大可能就是有问题的链接了,然后查看 info 一列,就能看到具体执行的什么 SQL 语句了,针对分析

MySQL数据库cpu飙升到500%的话他怎么处理?[通俗易懂]d

3.explain 分析语句

MySQL数据库cpu飙升到500%的话他怎么处理?[通俗易懂]4.添加索引,报错:”ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes”

将字段长度修改短点就可以了

索引长度过长 ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

MySQL数据库cpu飙升到500%的话他怎么处理?[通俗易懂]

alter table `api_apolloplatform_replaymsg` add index index_platformInfo(`platformInfo`);

MySQL数据库cpu飙升到500%的话他怎么处理?[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111825.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Eclipse(MyEclipse)使用技巧——改动凝视字体大小

    Eclipse(MyEclipse)使用技巧——改动凝视字体大小

    2021年11月30日
    47
  • java 接口default_接口default方法作用

    java 接口default_接口default方法作用在java8以后,接口中可以添加使用default或者static修饰的方法,在这里我们只讨论default方法,default修饰方法只能在接口中使用,在接口种被default标记的方法为普通方法,可以直接写方法体。实现类会继承接口中的default方法如果接口A中有default方法:publicinterfaceA{ publicdefaultvoida(){ System…

    2022年8月30日
    4
  • opencv-python图像二值化函数cv2.threshold函数详解及参数cv2.THRESH_OTSU使用「建议收藏」

    opencv-python图像二值化函数cv2.threshold函数详解及参数cv2.THRESH_OTSU使用「建议收藏」通常情况,我们一般不知道设定怎样的阈值thresh才能得到比较好的二值化效果,只能去试。如对于一幅双峰图像(理解为图像直方图中存在两个峰),我们指定的阈值应尽量在两个峰之间的峰谷#ret:暂时就认为是设定的thresh阈值,mask:二值化的图像ret,mask=cv2.threshold(img2gray,175,255,cv2.THRESH_BINARY)plt.imshow(mask,cmap=’gray’)上面代码的作用是,将灰度图img2gray中灰度值小于175的点置…

    2025年7月27日
    5
  • inetaddress java_java中Inetaddress类

    inetaddress java_java中Inetaddress类InetAddress类InetAddress类用来封装我们前面讨论的数字式的IP地址和该地址的域名。你通过一个IP主机名与这个类发生作用,IP主机名比它的IP地址用起来更简便更容易理解。InetAddress类内部隐藏了地址数字。InetAddress类中的工厂方法InetAddress类没有明显的构造函数。为生成一个InetAddress对象,必须运用一个可用的工厂方法。工厂方法(factor…

    2022年6月23日
    19
  • Web之真假分页

    Web之真假分页

    2021年11月16日
    64
  • python3.9多线程_python多线程没用

    python3.9多线程_python多线程没用什么是线程?线程也叫轻量级进程,是操作系统能够进行运算调度的最小单位,它被包涵在进程之中,是进程中的实际运作单位。线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其

    2022年7月28日
    16

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号