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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 死锁与递归锁及信号量等[通俗易懂]

    死锁与递归锁进程也是有死锁的所谓死锁:是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死

    2022年3月29日
    34
  • 卡尔曼滤波、扩展卡尔曼滤波、无迹卡尔曼滤波以及粒子滤波原理

    卡尔曼滤波、扩展卡尔曼滤波、无迹卡尔曼滤波以及粒子滤波原理所有滤波问题其实都是求感兴趣的状态的后验概率分布,只是由于针对特定条件的不同,可通过求解析解获得后验概率(KF、EKF、UKF),也可通过大数统计平均求期望的方法来获得后验概率(粒子滤波)。KF、EKF、UKF定义KF、EKF、UKF都是一个隐马尔科夫模型与贝叶斯定理的联合实现。是通过观测信息及状态转移及观测模型对状态进行光滑、滤波及预测的方法。而KF、EKF及UKF的滤波问题都…

    2022年6月17日
    32
  • pytest fixtures_premier fixture

    pytest fixtures_premier fixturefixture的优势Pytest的fixture相对于传统的xUnit的setup/teardown函数做了显著的改进:命名方式灵活,不局限于setup和teardown这几个命名conf

    2022年7月30日
    4
  • Django(7)url命名的作用「建议收藏」

    Django(7)url命名的作用「建议收藏」前言为什么我们url需要命名呢?url命名的作用是什么?我们先来看一个案例案例我们先在一个Django项目中,创建2个App,前台front和后台cms,然后在各自app下创建urls.py文件

    2022年7月30日
    3
  • java中getclass_java中的getClass()函数[通俗易懂]

    java中getclass_java中的getClass()函数[通俗易懂]Java反射学习所谓反射,可以理解为在运行时期获取对象类型信息的操作。传统的编程方法要求程序员在编译阶段决定使用的类型,但是在反射的帮助下,编程人员可以动态获取这些信息,从而编写更加具有可移植性的代码。严格地说,反射并非编程语言的特性,因为在任何一种语言都可以实现反射机制,但是如果编程语言本身支持反射,那么反射的实现就会方便很多。1,获得类型类我们知道在Java中一切都是对象,我们一般所使用的对象…

    2022年6月17日
    21
  • JAVA 实现简单的学生成绩管理系统

    JAVA 实现简单的学生成绩管理系统一、实验目的1.掌握java的类与对象的基本概念;2.掌握简单的信息管理系统的设计与实现。二、实验环境实验建议在安装了以下软件的计算机上完成:1.Windowsxp/win7/win8/win10操作系统2.JDK1.6以上版本3.Eclipse或NetBeansIDE或EditPlus或其它开发工具三、实验内容与要求(一)问题描述要求采用java…

    2022年7月13日
    13

发表回复

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

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