vlambda博客
学习文章列表

cpu负载时如何排查mysql的进程,并停止相关进程

当服务器cpu负载时,先执行 top 命令,若查看mysqld 占用cpu较高,则需要进一步检查哪些mysql进程导致的,分析其原因,有效的查杀,缓解服务器的负载。

下面是几条常用的SQL。

  1. 按客户端 IP 分组,看哪个客户端的链接数最多。

    SELECT client_ip, count(client_ip) AS client_numFROM ( SELECT substring_index(host, ':', 1) AS client_ip FROM information_schema.processlist) connect_infoGROUP BY client_ipORDER BY client_num DESC;

    cpu负载时如何排查mysql的进程,并停止相关进程

  2. 查看正在执行的线程,并按 Time 倒序,看看有没有执行时间特别长的线程。

    SELECT *FROM information_schema.processlistWHERE Command != 'Sleep'ORDER BY Time DESC;

    cpu负载时如何排查mysql的进程,并停止相关进程

  3. 找出所有执行时间超过 5 分钟的线程,拼凑出 kill 语句,方便查杀,可以直接复制执行,终止进程。(执行时间可自行调整)

    SELECT concat('kill ', id, ';')FROM information_schema.processlistWHERE Command != 'Sleep' AND Time > 300ORDER BY Time DESC;

   

在sql查询控制台中执行结果中的 kill 93; 杀死进程。

4. 查询线程及其相关信息

SHOW FULL PROCESSLIST;