如何排查cpu load 飙高问题

前言

服务器cpu彪高,我感觉是常遇见的问题,有经验的程序员,我想大部分都碰到过。我是一名Java程序员,我排查过很多类似的问题。总结一下排查问题的步骤,以便后面可以直接来复制粘贴命令.

问题排查步骤

  1. 使用top命令查看cpu占用高的进程:28694
    在这里插入图片描述 2. 使用命令 top -H -p 28694 定位到28694进程中占用cpu最高的线程:28696在这里插入图片描述
  2. 使用 printf “%x\n” 29696 转成16进制:7018
    在这里插入图片描述
  3. 使用 jstack 28694 | grep “7018” -A 10 输出导致彪高的堆栈代码
    在这里插入图片描述
  4. 分析该代码,可以从调用方,代码本身,异常情况等分析具体原因

案例

背景:之前我负责一个继续教育的sass系统,上线使用后正常,也预估了一定的资源空间,但有一段时间cpu老是会彪高,接受到告警。
问题排查:通过上述五个步骤,我定位到是学生学习课程的接口调用频繁导致的。按照并发量分析,不应该有这么大流量,当时用户量才十来万,我再去查看nginx日志,发现一个特定ip在疯狂刷接口,分析是破解接口,使用程序刷学习得分。
解决方案:零时方案使用nginx针对ip进行限流,最终方案是限流加接口验签

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值