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

一、征象形貌

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

二、排查历程

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

1、排查后台服务

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

通过上面的排查发现要接见的功效正常,清扫是当前功效造成的缘故原由。

2、排查服务器

1、找出耗CPU的历程

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

top -u user1

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

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

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

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

jps

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

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

ps -ef |grep tomcat

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

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

2、找出耗CPU的线程

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

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

top -Hp 47787

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

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

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

printf "%x\n" 47875

从上图可以看出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

找到下面的信息,

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

三、总结

CPU使用率过高,多数是由于线程无法终止或泛起死循环等缘故原由,需具体问题具体分析。

原文链接:https://www.cnblogs.com/teach/p/12660541.html

本站声明:网站内容来源于网络,若有侵权,请联系我们,我们将及时处理。

linux tomcat cpu占用高,排查tomcat服务器CPU使用率过高相关推荐

  1. 服务器物理内存使用率过高怎么办,服务器的物理内存过高怎么办

    服务器的物理内存过高怎么办 内容精选 换一换 一次完整的HTTP请求包括域名解析.建立TCP连接.发起请求.服务器接收到请求进行处理并返回处理结果.浏览器对HTML代码进行解析并请求其他资源,以及对页 ...

  2. window服务器cpu过高的排查_服务器CPU使用率过高排查与解决思路

    发现服务器的cpu使用率特别高 排查思路: -使用top或者mpstat查看cpu的使用情况 mpstat -P ALL 2 1 Linux 2.6.32-358.el6.x86_64 (linux- ...

  3. 生产环境下JAVA进程高CPU占用故障排查

    感谢原作者 http://blog.chinaunix.net/uid-10449864-id-3463151.html 问题描述: 生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常 ...

  4. Linux书签(02)用linux top命令自行监测和分析服务器CPU、内存、进程等性能

    楔子: 学会灵活使用各种或工具或手段来监测自己的项目运行情况无疑是一种自我能力的提高.Linux top 命令也许会有所帮助. Linux top 命令 Linux top 命令是服务器工程师和运维最 ...

  5. .net runtime占用cpu_追踪将服务器CPU耗光的凶手!

    前面我们讨论系统调用的时候结论是耗时200ns-15us不等.不过我今天说的我的这个遭遇可能会让你进一步认识系统调用的真正开销.在本节里你会看到一个耗时2.5ms的connect系统调用,注意是毫秒, ...

  6. 服务器cpu能修复吗,有关服务器cpu使用100%常见的解决方法

    我们在使用Windows操作系统时,或多或少都遇到过cpu占用率达到100%的问题,这种情况对我们正常使用计算机造成了很大影响.下面我们来看造成CPU占用率达到100%的原因和解决方法. ·杀毒软件. ...

  7. 2018主流服务器cpu,【热门服务器CPU排行榜】2021热门服务器CPU排名_热门服务器CPU排行榜10强-太平洋产品报价...

    TOP 1 Intel Xeon E5-2689 八核 核心数量 2.6GHz 主频 暂无评分 暂无报价 这款Intel Xeon E5-2689是一款性能很稳定的服务器CPU,能够积极响应服务请求并 ...

  8. 服务器cpu散热器性能,用于大型服务器CPU冷却的散热器性能研究.pdf

    用于大型服务器CPU冷却的散热器性能研究 62 FLUI D MACHI NERY V01.40,No .12 ,2012 文章编号: 1005-032 9( 2 012) 12-0062-04 用 ...

  9. mysql怎么定位cpu高_Mysql数据库服务器CPU冲高问题定位及分析

    1.现象概述和初步分析<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /& ...

最新文章

  1. GCC 在 Linux、Windows 系统安装
  2. rdd与mysql表 join_6、JdbcRDD读取mysql的数据
  3. 倒计时2天 | 专属技术人的盛会,为你而来!
  4. java单例模式几种实现方式
  5. 02 - java 标识符命名规范
  6. python下载文件保存_从URL下载文件并将其保存在Python文件夹中
  7. 三菱fx3u通讯手册_使用USR-N510实现局域网内连接FX3U
  8. ecshop商品属性价不打折
  9. 使用 Python SimpleHTTPServer 快速共享文件
  10. js(一) 三大事件 实现注册验证
  11. android 空格的转义字符,Android 常用转义字符
  12. 解决软件注册机被win10杀灭问题
  13. 小学-知识与能力【7】
  14. [Serializable]在C#中的作用,.NET 中的对象序列化
  15. 解决oracle出现the account is locked问题以及出现not logged on
  16. 802.1Q帧的格式 与 VLAN的类型
  17. [Fourier]傅里叶级数中虚数部分j去了哪里
  18. GeekPwn再现碟中谍场景 黑客肆意控制智能摄像头
  19. Qt 之 打开exe程序
  20. 如何完全卸载oracle

热门文章

  1. 斯诺登评苹果Face ID:我更担心隐私安全
  2. 【雷达通信】雷达探测项目仿真(Matlab代码实现)
  3. Probability Theory | Coin Tossing Problems (TBC) | 概率论中的抛硬币问题 (未完待续)
  4. Linux如何查找域名IP地址
  5. 2023年百度SEO优化要怎么做
  6. 【阿里巴巴】学习Java在面试过程中跳槽成功的心得总结
  7. Leetcode838: 推多米诺(medium)
  8. 由于无法验证发布者,Windows已经阻止此软件
  9. 2022年危险化学品生产单位安全生产管理人员操作证考试题库及答案
  10. 使用Navicat远程连接oracle数据库