您所在的位置:首页 - Linux - 正文Linux

tomcat 服务器负载过高问题分析

萧何-Vincent 萧何-Vincent 2022-01-11 【Linux】 1470人已围观

问题现象:

1,top命令查询服务器负载达到2.0-5之间,tomcat的cpu使用率达到104%

1.png


问题分析过程:


1)磁盘使用率未超出正常范围

2.png


2)内存使用率未超出正常范围还有空闲

3.png


3)服务器流量未现明显峰值

4.png


4)jvm内存状态未现异常非GC原因

5.png



综合初步预估是tomcat有线程一直在运行占用cpu资源

问题引出:如何确定tomcat的100%的cpu使用率到底问题在哪?


问题定位方案:

使用java提供的是jstack线程分析命令对进程里面的线程状态进行分析,先导出线程快照再分析具体是那个线程及对应的


执行步骤:


第一步:ps -ef|grep tomcat 查询出java/tomcat进程PID(eg:8209)


第二步:ps -aux 查询出该进程是哪个用户启动的(即使ROOT用户可能也导出线程快照失败)

6.png


第三步:su  tomcat 切换到进程启动用户


第四步:jstack -l 8209 > /usr/local/work/tomcat/8209.stack 导出PID对应的线程信息到文件


第五步:对导出的线程文件下载本地做分析(可以文本打开)


第六步:top -H -p 8209 命令查看对应进程是哪个线程占用CPU过高(eg:8308)

7.png


第七步:printf "%x\n" 8308 转换十进制为十六进制 此处为:2074


第八步:在导出的堆栈文件中搜索线程ID等于nid=0x2074的线程,此处即列出了该线程对应的类

8.png


第九步:根据线程信息找到对应的类定位问题成功,找到原因:日志队列线程一直处于RUNNABLE状态,一直在while循环判定队列是否为空

9.png



Tags: Linux

文章评论 (暂无评论,1470人围观)

我的名片

网名:Vincent

职业:IT

现居:SZ

Email:53126692@qq.com

站长寄语:技术分享,支持原创!

站点信息

  • 文章总数:65
  • 页面总数:1
  • 分类总数:5
  • 标签总数:12
  • 评论总数:24
  • 浏览总数:82970
取消
微信二维码
支付宝二维码

目录[+]