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%的话他怎么处理?[通俗易懂]

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • top 命令详解_top命令列含义

    top 命令详解_top命令列含义概况top命令是Linux下最常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。top命令1.命令格式:top[参数]2.命令功能:显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等3.命令参数:-b批处理-c显示完整的命令-I忽略失效过程-s保密模式-S

  • DLL注入原理分析

    DLL注入原理分析所谓DLL注入就是将一个DLL放进某个进程的地址空间里,让它成为那个进程的一部分。要实现DLL注入,首先需要打开目标进程。1、附加到目标/远程进程hRemoteProcess=OpenProcess(PROCESS_CREATE_THREAD|//允许远程创建线程PROCESS_VM_OPERATION |//允许远程VM操作PROCESS_VM_WRITE, //允许…

  • 搭建LAMP架构_redis搭建集群

    搭建LAMP架构_redis搭建集群搭建LAMP架构一、LAMP架构概述1、LAMP简介LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整台系统和相关软件,能够提供动态web站点服务及其应用开发环境。LAMP是一个缩写词,具体包括Linux操作系统,Apache网站服务器,MySQL数据库服务器,PHP(或perl,Python)网页编程语言。2、LAMP构成组件(1)Linux系统:LAMP架构的基础,提供用于支撑Web站点的操作系统(2)Apache网站服务:LAMP架构的前端,向用户提供网站服务、发送网

    2022年10月10日
  • java闰年_java 判断闰年

    java闰年_java 判断闰年题目:在l.jsp中,设置一个表单,可以输入年份,提交到另外一个action进行计算,如果算出来是闰年,那么就跳转到a1.jsp(显示闰年),如果是平年就跳转到a2.jsp(显示平年)。要求:需要把计算是否闰年的算法,封装到一个工具类Year中isLeap方法中。第一步:创建1.jsp页面,并跳到action.jsp请输入年份:如下图:第二步:封装year工具类创建一个class类,取名year…

  • mybatis二级缓存问题_mybatis清空二级缓存

    mybatis二级缓存问题_mybatis清空二级缓存转载:https://www.cnblogs.com/xrq730/p/6991655.html

  • 为什么我使用了索引,查询还是慢?「建议收藏」

    为什么我使用了索引,查询还是慢?

发表回复

您的电子邮箱地址不会被公开。

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