开发者社区> 问答> 正文

Java应用偶尔就发生把CPU占满的情况,怎么样监控和抓包分析下?

本问题来自云栖社区【阿里Java技术进阶2群】。https://yq.aliyun.com/articles/690084 点击链接欢迎加入社区大社群。

展开
收起
李博 bluemind 2019-06-24 13:14:34 5896 0
5 条回答
写回答
取消 提交回答
  • 观察线程相关信息

    2020-04-13 16:32:13
    赞同 展开评论 打赏
  • 可以利用arthas工具: https://alibaba.github.io/arthas/ cpu高时, attach进去, 然后执行thread -n 5, 这会打印cpu占用排名前5的线程堆栈, 多执行几次看哪个堆栈出现次数比较多, 嫌疑就比较搞, 同时arthas还提供其他功能比如watch monitor可以做更细致的监控

    2020-03-19 19:53:32
    赞同 展开评论 打赏
  • cpu占满,一般是代码有问题,dump线程看看有没有什么耗时的线程在跑

    2020-03-05 11:44:16
    赞同 展开评论 打赏
  • 如果是ide开发,可以debug里面看线程和使用,如果是线上环境推荐使用Arthans在线debug。

    2020-02-28 16:53:37
    赞同 展开评论 打赏
  • GitHub: https://github.com/chenhaoxiang

    打印线程的堆栈信息:

    jstack pid |grep tid -A 30

    1、top命令:Linux命令。可以查看实时的CPU使用情况。也可以查看最近一段时间的CPU使用情况。

    2、PS命令:Linux命令。强大的进程状态监控命令。可以查看进程以及进程中线程的当前CPU使用情况。属于当前状态的采样数据。

    3、jstack:Java提供的命令。可以查看某个进程的当前线程栈运行情况。根据这个命令的输出可以定位某个进程的所有线程的当前运行状态、运行代码,以及是否死锁等等。

    4、pstack:Linux命令。可以查看某个进程的当前线程栈运行情况。

    2019-10-30 19:49:35
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
EXTENDING SPARK WITH JAVA AGENTS 立即下载
从《阿里巴巴Java开发手册》编写推广谈技术成长 立即下载
RDS SQL Server CPU高使用率性能优化 立即下载