MySQL进程导致CPU突然飙升满负荷运行,怎么处理?

Yi 数据库 2023-02-07 36
定位过程
  1. 使用top 命令观察,确定是mysqld导致还是其他原因。
  2. 如果是mysqld导致的,show processlist,查看session情况,确定是不是有消耗资源的sql在运行。
  3. 找出消耗高的 sql,看看执行计划是否准确, index 是否缺失,或者实在是数据量太大造成。
处理过程
  1. kill 掉这些线程(同时观察 cpu 使用率是否下降), 一般来说,肯定要 kill 掉这些线程(同时观察 cpu 使用率是否下降),等进行相应的调整(比如说加索引、改 sql、改内存参数)之后,再重新跑这些 SQL。
  2. 进行相应的调整(比如说加索引、改sql、改内存参数)。index 是否缺失,如果是,则 建立索引。也有可能是每个 sql 消耗资源并不多,但是突然之间,有大量的 session 连进来导致 cpu 飙升,这种情况就需要跟应用一起来分析为何连接数会激增,再做出相应的调整,比如说限制连接数,添加缓存等
  3. 优化的过程,往往不是一步完成的,而是一步一步,执行一项优化措辞,再观察,再优化。
注意
  • CPU使用过高的情况下不要进行慢日志的开启。因为大量的请求,如果真是慢日志问题会发生日志磁盘写入,性能贼低