场景:

线上发布后,对并发查询比较高得接口没有做缓存优化,导致大量查询直接落在DB上了,出现慢SQL等性能问题,随着请求不断增加,cpu飞速飙升。

应激处理方案:

1.切换机器流量到没有问题的机器上

2.对本机系统线程做控制,减少或禁止系统创建新的业务线程。带系统cpu降低后,再慢慢放开线程数到正常值。

排查实例

  1. 1.使用top命令查看占cpu情况
  2. 2.jstack pid命令查看进程
  3. 导出使用 jstack pid > pid.txt
  4. 3.通过top -H -p pid名称查找出
  5. printf '%x' tid 通过此名称找出对应的16进制现场id

1.通过top名称查处问题线程

cpu飙升 - 图1

2.保存当前问题线程信息到文件

cpu飙升 - 图2

cpu飙升 - 图3

cpu飙升 - 图4

3.将问题线程id转16进制

cpu飙升 - 图5

4.在问题线程文件中搜索16进制的线程信息

cpu飙升 - 图6