排查tomcat服务器CPU使用率过高

栏目: IT技术 · 发布时间: 4年前

内容简介:tomcat要运行依赖于JDK,tomcat服务器的CPU使用率过高,大多都是因为部署的web程序的问题。在一次线上环境,前台访问页面的速度越来越慢,从浏览器F12中看到发出的请求都是pengding的状态。我这里tomcat部署在linux环境中。下面的排查过程均在linux下进行。

tomcat要运行依赖于JDK,tomcat服务器的CPU使用率过高,大多都是因为部署的web程序的问题。

一、现象描述

在一次线上环境,前台访问页面的速度越来越慢,从浏览器F12中看到发出的请求都是pengding的状态。

二、排查过程

我这里tomcat部署在 linux 环境中。下面的排查过程均在linux下进行。

1、排查后台服务

查看tomcat的后台日志,发现日志正常打印,未发现异常信息;把要执行的 SQL 复制出来,放到 mysql 的客户端执行,发现sql运行正常且查询速度正常。

通过上面的排查发现要访问的功能正常,排除是当前功能造成的原因。

2、排查服务器

1、找出耗CPU的进程

使用top命令查看特定用户(user1)的内存、cpu及各进程的信息,

top -u user1

使用上面的命令,可以看到下面的信息,

排查tomcat服务器CPU使用率过高

从上面可以看到存在一个 java 的进程,由于我这里没有其他的java相关的进程,这里可以判断为tomcat的进程,这里可以看到PID为47787,通过%CPU、%MEM分别表示CPU、内存的使用率,由于我这里问题已经解决,所以看到CPU的使用率已经下来了,异常情况下可以是超过100%的数值。

这样我们就可以找出使用CPU过高的进程。

还可以通过下面的命令来快速找到java进程,

jps

使用jps命令可以快速找到java进程的PID,如下图

排查tomcat服务器CPU使用率过高

这里可以看出PID为47787为tomcat进程。还可以使用下面的命令,

ps -ef |grep tomcat

上面的命令打印出下方的信息,

排查tomcat服务器CPU使用率过高

回到正题,上面使用top命令找到了CPU过高的进程。

2、找出耗CPU的线程

在上一步中找到了耗CPU的进程,下面要找到耗CPU的线程。我们知道一个进程中可以有多个线程,进程是线程的集合。

使用下面的命令找到耗CPU的线程,

top -Hp 47787

上面的“47787”即上一步中找到进程id,意思就是找出该进程下的线程信息。如下图,

排查tomcat服务器CPU使用率过高

从上图中可以看到该进程下的线程信息,由于我这里已经正常了,所以未看到CPU过高的线程,上图中的PID这里代表的是线程ID。假如47875这个线程的%CPU使用过高,

下面把该线程ID,转化为16进制。

printf "%x\n" 47875

排查tomcat服务器CPU使用率过高

从上图可以看出47875的16进制为“bb03”。

上面,通过进程ID,找到了耗CPU的线程ID,并且转化为了16进制。

3、从JVM堆栈中查找线程信息

我们获得了耗时较高的线程ID,下面通过JVM的堆栈信息找到线程信息,那么如何获得JVM的堆栈信息那,使用下面的命令

jstack 47787 > ./jvm.log 

上面的“47787”代表的是上面的进程ID,打印出47787进程的堆栈信息,保存在当前目录的jvm.log文件中。

下面从jvm.log文件中找到上面的线程信息,

grep -rn bb03 ~/jvm.log -A 100

找到下面的信息,

排查tomcat服务器CPU使用率过高

从上面可以看到是一些线程信息,那要怎么去排查那,可以通过上图红框中的状态为 RUNNABLE 的线程信息,即为正在运行的线程,从这里可以找到相关的信息,最终解决问题。

三、总结

CPU使用率过高,多数是因为线程无法终止或出现死循环等原因,需具体问题具体分析。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

编写高质量代码:改善Python程序的91个建议

编写高质量代码:改善Python程序的91个建议

张颖、赖勇浩 / 机械工业出版社 / 2014-6 / 59.00元

在通往“Python技术殿堂”的路上,本书将为你编写健壮、优雅、高质量的Python代码提供切实帮助!内容全部由Python编码的最佳实践组成,从基本原则、惯用法、语法、库、设计模式、内部机制、开发工具和性能优化8个方面深入探讨了编写高质量Python代码的技巧与禁忌,一共总结出91条宝贵的建议。每条建议对应Python程序员可能会遇到的一个问题。本书不仅以建议的方式从正反两方面给出了被实践证明为......一起来看看 《编写高质量代码:改善Python程序的91个建议》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

MD5 加密
MD5 加密

MD5 加密工具