网站链轮内有死链,昆山科技网站建设,祖传做网站,seo基础篇一、背景
最近测试反馈测试环境接口偶现有访问超时#xff0c;然后APP提示是网络失败#xff0c;看了一下测试环境的应用完全没啥问题#xff0c;一直以为是网络问题。
今天测试有反馈了#xff0c;赶紧看了一下测试服务器#xff0c;这次终于有症状了#xff0c;CPU直…一、背景
最近测试反馈测试环境接口偶现有访问超时然后APP提示是网络失败看了一下测试环境的应用完全没啥问题一直以为是网络问题。
今天测试有反馈了赶紧看了一下测试服务器这次终于有症状了CPU直接飙到300%了。
尽然问题复现了直接开干定位问题 二、解决思路
1、定位问题应用进程
使用top命令然后按照CPU排序如下图所示进程PID为13258的Java应用占用300%的CPU资源。 Java应用造成CPU高的主要原因一般是线程一直处于可运行Runnable状态通常这些线程在执行无阻塞操作、循环、正则或纯粹的计算等任务 另一个可能造成CPU高的原因是频繁GC
所以现在进程的线程情况
2、查看进程中线程使用情况
使用命令 top -H -p 查看如下图
#-H所有线程占用资源情况。
#-p进程号指定进程
top -H -p 13258发现有三个线程实时CPU占用率较高并且处理器使用时间非常长25438线程实际占有处理器的时间甚至达到190分钟。
现在问题已经找到了就是这三个线程持续占用CPU资源下面我们再具体看一下这个线程再干嘛
3、查看线程的快照
通过jstack 命令查看线程14689的快照
jstack 13258 |grep 3961 -A 30jstack后面的参数是PID的值3961是线程id 14689 的十六进制。
可以通过以下命令把线程id转成16进制 printf %x\n 14689通过观察输出可以看到线程长期处于可运行状态直接根据堆栈信息找到对应的代码。
4、最后
找到对应代码修改后基本就解决问题了