页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

比较常见的情况是用户服务器的CPU一段时间内持续高占用不释放,导致运维平台持续告警,用户想要我们分析一下具体的原因以及给出必要的解决方案。

Image Added

3、问题分析

3.1 第一步:定位占用CPU高的进程

...

3.2.1 方法1 通过top查看CPU消耗

方法说明:

优势:不依赖任何外部工具,且在Smartbi无法页面访问时也能使用。优势:不依赖任何外部工具,且可以分析ETL、OLAP和Tomcat。

劣势:手动打命令转化慢,可能线程瞬间就运行完毕了,则无法捕捉到。

...

3.2.2 方法2 通过listthread.jsp查看CPU消耗

方法说明:

优势:操作简单方便快捷。

劣势:必须Smartbi能访问时也能使用。劣势:必须是Smartbi应用占用了CPU且必须Smartbi能访问时也能使用。

访问地址举例:http://proj.smartbi.com.cn:30001/smartbi/vision/monitor/listthreads.jsp 

加载此界面完成后Ctrl+S保存网页内容发回分析,可分析是哪个线程占用过高的CPU,线程的堆栈也可以看到。

3.2.3 方法3 通过基线Tomcat内置工具

优势:操作简单方便快捷,且在Smartbi无法页面访问时也能使用。优势:操作简单方便快捷,且可以分析ETL、OLAP和Tomcat。

劣势:需要运行shell脚本,有些安全要求高的项目可能会被禁止。

...

命令:./1_show-busy-java-threads.sh

...

3.3 第三步:根据代码情况判断引起CPU高占用的原因

如果已经定位到了具体因为CPU高的代码,可以反馈研发以及结合现场产品使用的场景定位出具有的原因。(比如是因为数据库问题导致的线程等待)

4、项目案例参考

4.1 ETL导致的CPU占用告警

某项目反馈CPU使用率突然飙升,经排查发现是因为ETL执行引擎占用了较高的CPU

...