当有时发现系统反应慢,查看MySQL进程的CPU使用率超出了平常水平的几倍,接下来介绍如何定位。
如下图,MySQL的CPU使用率高,负载亦高
通过 top -Hp 1308 命令查看MySQL进程中哪些线程占用了较高的CPU资源
接下来,我们要确定上面那些CPU占用高的是什么线程,它们在做什么?
执行以下SQL:
SELECT a.THREAD_OS_ID,b.user,b.host,b.db,b.command,b.time,b.state,b.info
FROM performance_schema.threads a, information_schema.processlist b
WHERE b.id = a.processlist_id And b.command !='Sleep'
这里可以清楚的看到线程在做什么事
我们发现通过top -Hp pid 查到的线程与上面存在一一对应情况。这时我们定位到了是seata相关的分布式事务引起了MySQL占用了大量的CPU资源。下一步交由相关负责人处理。