Linux排查java程序CPU占用过高问题
项目部署到服务器上之后,偶尔出现CPU被java程序占满的情况。
现在排查问题原因
top
首先查看系统资源占用信息,使用命令
top
发现正在运行的JAVA项目CPU占用率如果很高,那问题肯定出在这个程序中。
top -H -p[进程ID]
得到进程ID后,我们需要获取到具体的线程ID,然后用jstack分析。
top -H -p[进程ID]
需要将线程ID转换为十六进制,直接在Linux中即可转换。
printf “%x\n” [线程十进制数]
补充:\n只为换行显示,单纯的转换只需要%x 即可
printf "%x\n" [线程十进制数]
得到十六进制数之后可以使用JDK提供的jstack进行分析。
使用jstack分析
jstack是JDK自带的堆栈分析工具,如果是Java程序导致的服务器CPU占用异常,大家可以利用此工具进行排查。
jstack 【进程ID】 | grep 0x【线程ID十六进制】 -A 30(显示后30行)
如果提示 -bash: jstack: command not found,则可以找到jdk的目录,进入bin目录,
结果排查
如果是代码错误直接显示出来某个类那一行出现问题,可以根据代码排查。
现在排查到是因为德鲁伊线程池连接数据库出现问题,尚未解决。
"Druid-ConnectionPool-Log-443267826" #482142 daemon prio=5 os_prio=0 tid=0x00007f5aa85bb000 nid=0x29bb waiting on condition [0x00007f5a1b2c7000]java.lang.Thread.State: TIMED_WAITING (sleeping)at java.lang.Thread.sleep(Native Method)at com.alibaba.druid.pool.DruidDataSource$LogStatsThread.run(DruidDataSource.java:2219)"Druid-ConnectionPool-Destroy-790650151" #482141 daemon prio=5 os_prio=0 tid=0x00007f5aa8b34000 nid=0x29ba sleeping[0x00007f5a1b3c8000]java.lang.Thread.State: TIMED_WAITING (sleeping)at java.lang.Thread.sleep(Native Method)at com.alibaba.druid.pool.DruidDataSource$DestroyConnectionThread.run(DruidDataSource.java:2172)"Druid-ConnectionPool-Create-790650151" #482140 daemon prio=5 os_prio=0 tid=0x00007f5aa8b32800 nid=0x29b9 waiting on condition [0x00007f5a1b4c9000]java.lang.Thread.State: WAITING (parking)at sun.misc.Unsafe.park(Native Method)- parking to wait for <0x00000006ebcbcd18> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2079)"Druid-ConnectionPool-Log-790650151" #482139 daemon prio=5 os_prio=0 tid=0x00007f5aa97d8000 nid=0x29b8 waiting on condition [0x00007f5a1b5ca000]java.lang.Thread.State: TIMED_WAITING (sleeping)at java.lang.Thread.sleep(Native Method)at com.alibaba.druid.pool.DruidDataSource$LogStatsThread.run(DruidDataSource.java:2219)"Druid-ConnectionPool-Destroy-504900470" #482138 daemon prio=5 os_prio=0 tid=0x00007f5aa97d6800 nid=0x29b7 sleeping[0x00007f5a1b6cb000]--"GC task thread#3 (ParallelGC)" os_prio=0 tid=0x00007f5af0024000 nid=0x1a7b runnable "VM Periodic Task Thread" os_prio=0 tid=0x00007f5af0192800 nid=0x1a84 waiting on condition
Linux排查java程序CPU占用过高问题相关推荐
- 线上java程序CPU占用过高问题排查
简要 工作中负责的有一个项目是使用iReport+JasperReport实现的一个打印系统.最近这个线上程序经常无响应,重启后恢复正常,但是时不时还是会出现类似的问题. 最后发现是JasperRep ...
- linux查看java进程cpu占用过高
linux下查找java进程占用CPU过高原因 1. 查找进程 top查看进程占用资源情况 明显看出java的两个进程22714,12406占用过高cpu. 2.查找线程 使用top -H -p ...
- Linux中JAVA服务器CPU占用过高(分析解决方法)
当发现生产环境CPU使用非常高,并且居高不下,导致服务器报警,需要快速定位,分析是什么地方占用CPU过高,推荐步骤如下: 1. 首先服务器查看占用cpu高的进程是哪一个,查出进程号 top 2.查询该 ...
- Linux中Python程序CPU占用高排查
Linux中Python程序CPU占用高排查,Linux中Python程序CPU占用高排查,Linux中Python程序CPU占用高排查 kafka-python==2.0.2和 gevent 新版本 ...
- Java代码-CPU占用过高排查思路
Java代码-CPU占用过高排查思路: 1.top 查看占用cpu过高的进程PID 2.top -Hbp 32048|awk '/java/ && $9>50' 查看进程中占用 ...
- java应用 cpu占用过高问题分析及解决方法
主要介绍了java应用cpu占用过高问题分析及解决方法,具有一定参考价值,需要的朋友可以参考下. 使用jstack分析java程序cpu占用率过高的问题 1,使用jps查找出java进程的pid,如3 ...
- windows服务器java项目cpu占用较高原因分析
前言 在windows平台上要找出到底是哪个线程占用的cpu还不那么容易,linux用top就简单多了最后的解决方法: 1.找到java进程对应的pid. 找pid的方法是:打开任务管理器,然后点击 ...
- Linux java进程CPU占用过高解决方案
总目录 一.前言: 二.模拟java程序CPU过高 1 修改代码为死循环 2 部署在linux上 访问该接口 根据top命令查看CPU参数 3 通过ps命令查看这个程序的线程信息,tid代码线程ID, ...
- 【linux】oracle数据库cpu占用过高排查方案
将[%cpu]占用率最高的那条的[PID]复制取出,去数据库执行下面语句,即可查询出是哪条sql语句占导致cpu占用很高 SELECT sql_text FROM v$sqltext a WHERE ...
最新文章
- python链表添加多个值_Python基础10之数据结构(下)
- Oracle PL/SQL匿名块
- 计算机原理存储器实验报告,计算机组成原理存储器实验报告.doc
- python中比较运算符用于比较两个数_python中的运算和运算符
- 关于[一个基于WF的业务流程平台]表设计的说明
- yolov3算法优点缺点_优点缺点
- k64 datasheet学习笔记12---System Integration Module (SIM)
- 36 MM配置-采购-采购订单-采购订单审批-编辑特性
- bzoj4820 [Sdoi2017]硬币游戏 高斯消元+概率+kmp
- mongodb获取数组中只符合条件的元素
- request中的技巧
- Implementing Infinite Scroll Into a React Component
- Ubuntu22.04.01Desktop桌面版安装记录221109
- 关于Echarts的平均值线
- 基于工作流平台的ITSM系统
- JS实现抽奖代码(0-999随机数开始暂停抽奖按钮)
- 查看CentOS的版本
- 关于Java字符串的全部,就在这篇文章里了
- 中级会计还考职称计算机吗,如何应对中级会计职称考试全面实行无纸化
- 6 仓储管理系统 门店端功能
热门文章
- Matlab-中寻找峰值函数,波峰波谷
- mysql三阶段提交实现_基于两阶段提交的分布式事务实现(UP-2PC)
- 手机登入注册为什么出现这个错误?
- Mybatis(持久层的框架),注入的三种方式
- 计算机基础知识真题模拟7,计算机一级考试计算机基础及Photoshop应用模拟试题(7)...
- java jdbc 参数_java_jdbc_可变参数_MetaData
- python 高性能http服务器_Python高性能HTTP客户端
- Root Motion的脚本处理
- Java 实现 AES 加解密
- Java 中的array数组总结之一