使用Jtop诊断高CPU实例1
背景
Windows服务器上已发现进程CPU占用率高,需要找出代码问题。
原理
每2秒刷新所有线程CPU占用时间,由高到低排序,取前10,如线程执行短时任务则此方法无效。这里的CPU占用时间是从连接到进程后,开始算起的线程用户时间+系统时间,所以通常用在问题即将发现前连接而不是运行了一夜再比较大小,意义不大。 我们认为CPU在一段时间内是否占满,应该为监控时间段/CPU核数,如监控了16秒,第1名为4秒,CPU为4核,则表示占满;若监控了24小时,第1名为4秒,则忽略不计。
使用场景
短时间内监控CPU占用较高的进程,发现长时CPU密集型任务。
操作步骤
\1. 进入cmd命令行 cd 到%JAVA_HOME%\bin目录;
\2. 复制 Jtop.jar到%JAVA_HOME%\bin ;
\3. 执行jconsole -pluginpath JTop.jar ;
\4. 选择需要监控的进程,如下图;
\5. 切换到JTOP TAB页查看结果,显示CPU占用率前十榜单,如下图:
优化
通过TOP 10,找出接近占满的线程,在“线程”TAB页根据线程名称查找对应的线程堆栈即可。
接近占满的线程,在“线程”TAB页根据线程名称查找对应的线程堆栈即可。