开发者社区 > 云原生 > 微服务 > 正文

Arthas这种情况下该怎么办?

执行命令 jstack PID | grep tid 找到线程堆栈后 堆栈信息都是java 基类的 没有业务相关的 Arthas这种情况下该怎么办? 线上线程数暴增 高峰到达1w+ cpu 飙增,top 命令找到cpu 占比最高的线程后 线程堆栈没看到什么有效的信息 这个时候除了top 看进程、线程,看堆栈外 有没有其它更好的方式

展开
收起
三分钟热度的鱼 2024-03-13 20:06:30 26 0
2 条回答
写回答
取消 提交回答
  • 阿里云大降价~

    当使用jstack命令查看线程堆栈时,如果发现堆栈信息都是Java基类的,没有业务相关的信息,可能是由于以下原因:

    1. 线程处于等待状态(WAITING或TIMED_WAITING),例如等待锁、等待网络连接等。在这种情况下,jstack输出的堆栈信息可能只显示Java基类的部分。
    2. 线程被操作系统挂起,可能是因为系统资源不足或者其他原因。这种情况下,jstack可能无法获取到完整的堆栈信息。

    针对这种情况,可以尝试以下方法:

    1. 使用jstat命令查看线程的状态,找出问题线程的状态,例如:jstat -t -p PID
    2. 使用jmap命令生成堆内存快照,分析对象实例和类加载器等信息,例如:jmap -histo:live PID
    3. 使用jconsoleVisualVM等可视化工具分析线程和堆内存情况。
    4. 如果可能,尝试在本地环境复现问题,以便更方便地调试和分析。
    5. 根据业务逻辑,检查是否有死锁、资源竞争等问题。
    6. 优化代码,减少不必要的线程创建和阻塞操作,提高系统性能。

    总之,在遇到这种情况时,需要综合运用各种工具和方法,从不同角度分析问题,才能找到根本原因并解决。

    2024-03-16 08:55:14
    赞同 展开评论 打赏
  • jstack pid > 数据导出来看下是哪个线程池的线程暴增。此回答整理自钉群“Arthas开源交流群”

    2024-03-13 20:31:58
    赞同 展开评论 打赏
问答分类:
问答地址:

为微服务建设降本增效,为微服务落地保驾护航。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载