前言

mysql 查看cpu100%的流程也是固定的,先通过show full processlist或者information_schema.processlist查看info字段有值的线程,一般来说都是sql堆积导致cpu 100%,以下是具体方法

查看mysql线程

有两种方法查看mysql线程,第一个方法show full processlist,第二方法information_schema.processlist,这两种查询结果是一样的,查表更方便一些,因为可以过滤字段。

  • show full processlist;查看所有mysql线程(connection),如果不加full,则查看前100条。
    或者
  • select * from information_schema.processlist where info!='';
    找到info里有数据的记录,查看state,如果状态不变并持续了很多秒,那么大概率是问题所在。
    如果情况紧急,可以使用kill id来杀死线程,因为一个线程对应一个connection,所以杀死线程就是杀死connection。
    还可以看看正在执行的失误,排除一下可能性。
    select trx_state, trx_started, trx_mysql_thread_id, trx_query from information_schema.innodb_trx;

我遇到的cpu 100%情况

我遇到的mysql cpu100%都是因为定时任务导致sql累积,多个线程执行同一sql导致的。