jvm排查占用CPU过高的线程

后补:
假如条件允许的话,最好引入arthas查看线程:https://arthas.aliyun.com/doc/thread.html

第一步:查找占用CPU最高的进程id

top

第二步:把该进程中占用CPU最高的线程输出到文件:/tmp/cpu_tid.log

top -Hp <最高pid> -b -n 3 -d 3 >> /tmp/cpu_tid.log

<最高pid>:把第一步查找的最高的pid输入
-b:batch模式,可以重定向到文件中
-n 3:一共取3次top数据。后边加数字,表示次数
-d 3:每次top时间间隔是3秒钟

第三步:把jvm线程堆栈输出到文件:/tmp/jstack.log

sudo /usr/local/jdk1.8.0_212/bin/jstack -l <最高pid> >> /tmp/jstack.log  

<最高pid>:把第一步查找的最高的pid输入

第四步:查找占用最高的线程的堆栈信息

cat /tmp/jstack.log | grep `printf "%x\n" <tid>` -A 10

<tid>:把第二步查找的tid输入即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Spring Boot 应用程序中排查内存占用过高的问题通常需要以下步骤: 1. 检查应用程序的代码,尤其是与内存相关的代码,是否存在内存泄漏或者不必要的对象引用。 2. 使用 JVM 监控工具,例如 jstat、jmap 和 jvisualvm 等工具,查看应用程序的内存使用情况。例如,使用 jstat 命令查看应用程序的堆内存使用情况: ``` $ jstat -gcutil <pid> 1000 10 ``` 该命令会每隔 1 秒钟输出一次应用程序的堆内存使用情况,可以查看堆内存的使用情况,包括 Eden 区、Survivor 区和老年代等。 3. 使用内存分析工具,例如 Eclipse MAT 和 JProfiler 等工具,分析应用程序的内存使用情况。这些工具可以帮助您查找内存泄漏和减少内存占用。 4. 检查应用程序的依赖库,是否存在不必要的依赖或者版本冲突等问题。这些问题可能导致应用程序加载了大量不必要的类和对象,从而增加了内存占用。 5. 将应用程序部署到不同的环境中,例如开发环境、测试环境和生产环境等,检查内存使用情况是否有所不同,以确定问题是否与特定环境相关。 6. 尝试调整 JVM 的内存参数,例如堆内存大小、垃圾回收器类型和参数等,以优化内存使用效率。 7. 如果问题仍然存在,可以考虑增加系统资源,例如增加内存、CPU、磁盘等,或者优化应用程序的代码。 请注意,排查此问题需要一定的技术能力和经验。如果您不确定如何处理,请寻求专业的技术支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值