服务器CPU高居不下,JAVA线程占用排查方式

 更新时间:2023年09月01日 14:25:45   作者:保护我方胖虎  
这篇文章主要介绍了服务器CPU高居不下,JAVA线程占用排查方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

服务器CPU高居不下,JAVA线程占用排查

排查Java进程中确定哪个线程正在占用CPU的时间。

详细步骤

1、首先确定进程的 ID 

可以使用 jps -v 或者 top 命令直接查看

jps -v

我们这里使用进程ID (PID) 11646

2、查看该进程中哪个线程占用大量 CPU

执行 top -H -p [PID]

结果如下:

top -H -p 11646

3、接下来我们将进程中的所有线程输出到一个文件中

执行:jstack [PID] > 文件名

 jstack 11646 > test-jstack.txt

4、在进程中查找对应的线程 ID

执行:cat 输出文件名 | grep -i 16进制线程号

假设我们想看编号为 5331这个线程,首先将 5331线程号转成 16 进制是 14d3

cat test-jstack.txt |grep -i 14d3

结果是:

找到问题!

JAVA高内存占用排查

1、查看java进程

#获取进程号
ps -ef|grep java

2、使用top命令查看内存占用

# 查看占用内存最多的线程
top -Hp 进程号

3、将线程号转为16进制

printf "%x\n" 线程号

4、使用jstack打印出当前线程的信息

jstack 进程号 | grep -20 线程16进制

5、使用jstack 将线程信息输出到文本

jstack -l 进程号 >> jstack.log

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 关于Openfire集群源码的分析

    关于Openfire集群源码的分析

    这篇文章主要介绍了关于Openfire集群源码的分析,内容比较详细,具有一定参考价值,需要的朋友可以了解下。
    2017-09-09
  • Java 中 synchronized 的使用方式和锁升级

    Java 中 synchronized 的使用方式和锁升级

    Java中的synchronized关键字用于实现线程同步,保证同一时刻只有一个线程可以访问被同步的代码块或方法,JVM引入了锁升级机制,从无锁状态开始,根据竞争情况逐步升级为偏向锁、轻量级锁和重量级锁,以提高性能,感兴趣的朋友一起看看吧
    2025-03-03
  • 关于解决雪花算法生成的ID传输前端后精度丢失问题

    关于解决雪花算法生成的ID传输前端后精度丢失问题

    这篇文章主要介绍了关于解决雪花算法生成的ID传输前端后精度丢失问题,雪花算法生成的ID传输到前端时,会出现后三位精度丢失,本文提供了解决思路,需要的朋友可以参考下
    2023-03-03
  • SpringBoot简单使用SpringData的jdbc和durid

    SpringBoot简单使用SpringData的jdbc和durid

    今天给大家带来的是关于Java的相关知识,文章围绕着SpringBoot简单使用SpringData的jdbc和durid,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Java效率工具之Lombok的具体使用

    Java效率工具之Lombok的具体使用

    这篇文章主要介绍了Java效率工具之Lombok的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Java实现Kafka生产者和消费者的示例

    Java实现Kafka生产者和消费者的示例

    这篇文章主要介绍了Java实现Kafka生产者和消费者的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • 详解Spring Boot 部署jar和war的区别

    详解Spring Boot 部署jar和war的区别

    本篇文章主要介绍了详解Spring Boot 部署jar和war的区别,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • 三道java新手入门面试题,通往自由的道路--锁+Volatile

    三道java新手入门面试题,通往自由的道路--锁+Volatile

    这篇文章主要为大家分享了最有价值的3道多线程面试题,涵盖内容全面,包括数据结构和算法相关的题目、经典面试编程题等,对hashCode方法的设计、垃圾收集的堆和代进行剖析,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • MyBatis 添加元数据自定义元素标签的实现代码

    MyBatis 添加元数据自定义元素标签的实现代码

    这篇文章主要介绍了MyBatis 添加元数据自定义元素标签的实现代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • mybatis mapper互相引用resultMap启动出错的解决

    mybatis mapper互相引用resultMap启动出错的解决

    这篇文章主要介绍了mybatis mapper互相引用resultMap启动出错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08

最新评论