项目部署到服务器上之后,偶尔出现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占用过高问题相关推荐

  1. 线上java程序CPU占用过高问题排查

    简要 工作中负责的有一个项目是使用iReport+JasperReport实现的一个打印系统.最近这个线上程序经常无响应,重启后恢复正常,但是时不时还是会出现类似的问题. 最后发现是JasperRep ...

  2. linux查看java进程cpu占用过高

    linux下查找java进程占用CPU过高原因 1. 查找进程 top查看进程占用资源情况 明显看出java的两个进程22714,12406占用过高cpu.   2.查找线程 使用top -H -p ...

  3. Linux中JAVA服务器CPU占用过高(分析解决方法)

    当发现生产环境CPU使用非常高,并且居高不下,导致服务器报警,需要快速定位,分析是什么地方占用CPU过高,推荐步骤如下: 1. 首先服务器查看占用cpu高的进程是哪一个,查出进程号 top 2.查询该 ...

  4. Linux中Python程序CPU占用高排查

    Linux中Python程序CPU占用高排查,Linux中Python程序CPU占用高排查,Linux中Python程序CPU占用高排查 kafka-python==2.0.2和 gevent 新版本 ...

  5. Java代码-CPU占用过高排查思路

    Java代码-CPU占用过高排查思路: 1.top 查看占用cpu过高的进程PID 2.top -Hbp 32048|awk '/java/ && $9>50'  查看进程中占用 ...

  6. java应用 cpu占用过高问题分析及解决方法

    主要介绍了java应用cpu占用过高问题分析及解决方法,具有一定参考价值,需要的朋友可以参考下. 使用jstack分析java程序cpu占用率过高的问题 1,使用jps查找出java进程的pid,如3 ...

  7. windows服务器java项目cpu占用较高原因分析

    前言 在windows平台上要找出到底是哪个线程占用的cpu还不那么容易,linux用top就简单多了最后的解决方法: 1.找到java进程对应的pid. 找pid的方法是:打开任务管理器,然后点击 ...

  8. Linux java进程CPU占用过高解决方案

    总目录 一.前言: 二.模拟java程序CPU过高 1 修改代码为死循环 2 部署在linux上 访问该接口 根据top命令查看CPU参数 3 通过ps命令查看这个程序的线程信息,tid代码线程ID, ...

  9. 【linux】oracle数据库cpu占用过高排查方案

    将[%cpu]占用率最高的那条的[PID]复制取出,去数据库执行下面语句,即可查询出是哪条sql语句占导致cpu占用很高 SELECT sql_text FROM v$sqltext a WHERE ...

最新文章

  1. python链表添加多个值_Python基础10之数据结构(下)
  2. Oracle PL/SQL匿名块
  3. 计算机原理存储器实验报告,计算机组成原理存储器实验报告.doc
  4. python中比较运算符用于比较两个数_python中的运算和运算符
  5. 关于[一个基于WF的业务流程平台]表设计的说明
  6. yolov3算法优点缺点_优点缺点
  7. k64 datasheet学习笔记12---System Integration Module (SIM)
  8. 36 MM配置-采购-采购订单-采购订单审批-编辑特性
  9. bzoj4820 [Sdoi2017]硬币游戏 高斯消元+概率+kmp
  10. mongodb获取数组中只符合条件的元素
  11. request中的技巧
  12. Implementing Infinite Scroll Into a React Component
  13. Ubuntu22.04.01Desktop桌面版安装记录221109
  14. 关于Echarts的平均值线
  15. 基于工作流平台的ITSM系统
  16. JS实现抽奖代码(0-999随机数开始暂停抽奖按钮)
  17. 查看CentOS的版本
  18. 关于Java字符串的全部,就在这篇文章里了
  19. 中级会计还考职称计算机吗,如何应对中级会计职称考试全面实行无纸化
  20. 6 仓储管理系统 门店端功能

热门文章

  1. Matlab-中寻找峰值函数,波峰波谷
  2. mysql三阶段提交实现_基于两阶段提交的分布式事务实现(UP-2PC)
  3. 手机登入注册为什么出现这个错误?
  4. Mybatis(持久层的框架),注入的三种方式
  5. 计算机基础知识真题模拟7,计算机一级考试计算机基础及Photoshop应用模拟试题(7)...
  6. java jdbc 参数_java_jdbc_可变参数_MetaData
  7. python 高性能http服务器_Python高性能HTTP客户端
  8. Root Motion的脚本处理
  9. Java 实现 AES 加解密
  10. Java 中的array数组总结之一