CPU狂飙900%,该怎么处理

当CPU使用率飙升时,通过`top`命令定位mysqld进程,使用`show processlist`检查SQL,分析执行计划并考虑调整索引。如果问题在Java进程,使用`top -Hp`和`jstack`命令查找高CPU线程并分析代码。优化包括增加索引、调整SQL、限制连接数和使用缓存。注意,不建议在高负载下开启慢日志。
摘要由CSDN通过智能技术生成

1、数据库飙升

定位过程:

  • 使用top 命令观察,确定是mysqld导致还是其他原因。

  • 如果是mysqld导致的,show processlist,查看session情况,确定是不是有消耗资源的sql在运行。

  • 找出消耗高的 sql,看看执行计划是否准确, index 是否缺失,或者实在是数据量太大造成

处理过程:

  • kill 掉这些线程(同时观察 cpu 使用率是否下降), 一般来说,肯定要 kill 掉这些线程(同时观察 cpu 使用率是否下降),等进行相应的调整(比如说加索引、改 sql、改内存参数)之后,再重新跑这些 SQL。

  • 进行相应的调整(比如说加索引、改 sql、改内存参数)

    index 是否缺失,如果是,则  建立索引。也有可能是每个 sql 消耗资源并不多,但是突然之间,有大量的 session 连进来导致 cpu 飙升,这种情况就需要跟应用一起来分析为何连接数会激增,再做出相应的调整,比如说限制连接数等;关注公z号:码猿技术专栏,回复关键词:1111 获取阿里内部Java性能调优手册

  • 优化的过程,往往不是一步完成的,而是一步一步,执行一项优化措辞,再观察,再优化。

 实战演示:

show processlist;

发现类似很多相同的SQL语句,一直处于query状态中。

总结:

  • 16
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值