Java 业务开发常见错误 100 例
朱晔
贝壳金服资深架构师
52944 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 48 讲
代码篇 (23讲)
Java 业务开发常见错误 100 例
15
15
1.0x
00:00/00:00
登录|注册

34 | 加餐4:分析定位Java问题,一定要用好这些工具(一)

分析协议、确认程序是否正确实现
排查C/S网络程序的Bug或性能问题
透明性
图形界面工具
命令行工具
其他工具分析排查Java应用程序问题
客户端和MySQL认证过程
区别jmap -dump和jmap -dump:live
使用Wireshark分析网络包
JDK自带工具
性能提升100倍
修改连接字符串
Wireshark捕获网络流量
问题重现
jcmd
jstack
jstat
jconsole
jvisualvm
jinfo
jps
长期积累对程序运作的认识
工具只是定位问题的手段
为什么使用工具来分析问题
思考与讨论
重点回顾
使用Wireshark分析SQL批量插入慢的问题
使用JDK自带工具查看JVM情况
分析定位Java问题常用的一些工具

该思维导图由 AI 生成,仅供参考

你好,我是朱晔。今天,我要和你分享的内容是分析定位 Java 问题常用的一些工具。
到这里,我们的课程更新 17 讲了,已经更新过半了。在学习过程中,你会发现我在介绍各种坑的时候,并不是直接给出问题的结论,而是通过工具来亲眼看到问题。
为什么这么做呢?因为我始终认为,遇到问题尽量不要去猜,一定要眼见为实。只有通过日志、监控或工具真正看到问题,然后再回到代码中进行比对确认,我们才能认为是找到了根本原因。
你可能一开始会比较畏惧使用复杂的工具去排查问题,又或者是打开了工具感觉无从下手,但是随着实践越来越多,对 Java 程序和各种框架的运作越来越熟悉,你会发现使用这些工具越来越顺手。
其实呢,工具只是我们定位问题的手段,要用好工具主要还是得对程序本身的运作有大概的认识,这需要长期的积累。
因此,我会通过两篇加餐,和你分享 4 个案例,分别展示使用 JDK 自带的工具来排查 JVM 参数配置问题、使用 Wireshark 来分析网络问题、通过 MAT 来分析内存问题,以及使用 Arthas 来分析 CPU 使用高的问题。这些案例也只是冰山一角,你可以自己再通过些例子进一步学习和探索。
在今天这篇加餐中,我们就先学习下如何使用 JDK 自带工具、Wireshark 来分析和定位 Java 程序的问题吧。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了使用Java工具来分析和定位Java程序问题的方法,强调了通过工具来观察问题的重要性。作者分享了使用JDK自带的工具来查看JVM情况的方法,包括jps、jinfo、jvisualvm、jconsole和jstat等工具。通过这些工具,读者可以观察JVM的参数设置、GC活动、堆内存情况、活动线程数等信息,从而定位和分析Java程序的问题。文章还介绍了使用Wireshark分析SQL批量插入慢的问题的方法,通过Wireshark分析网络包可以让程序与MySQL交互的整个流程变得透明。通过实例和工具的介绍,为读者提供了一些实用的技术指导和工具使用方法,帮助读者快速了解Java程序的运行情况,提高问题定位和解决的效率。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Java 业务开发常见错误 100 例》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(23)

  • 最新
  • 精选
  • Darren
    1、jmap -dump是会dump所有的对象,不关心是否可达;jmap -dump:live只会dump存活的对象,即可以从GcRoot可达的对象。测试是在循环中,一直创建对象,然后休眠1s,dump2次,发现创建对象的个数不同。

    作者回复: 👍🏻

    2020-04-22
    22
  • 程序员小跃
    老师,你让我这个Java重新整理了方向,这才是 Java 更高层次需要掌握的东西,不然平时只知道写代码,遇到问题只会重启的话,对自己能力的提升实在是太慢了。 Java 的世界,还是离不开 JVM的判断。Wireshark 原来还可以分析 MySQL 相关,以前一直觉得只能网络抓包呢,哈哈

    作者回复: 觉得专栏好可以多分享推荐给其他人

    2020-10-31
    2
    6
  • 小杰
    老师现在特别火的阿里定位问题的工具Arthas 是不是都是拿jvm工具实现的呢,感觉很强大

    作者回复: 不是,是通过javaagent实现的(动态加载),后面一篇加餐也会介绍Arthas的使用。

    2020-04-21
    6
  • 👽
    墙裂建议收藏,总有一天用得着。

    作者回复: :)

    2020-04-21
    5
  • 梦倚栏杆
    -XX:ThreadStackSize=256k 实际效果是256M -Xss:256k 实际效果是256k 官方文档提示这两个参数效果等同,都是byte为单位 https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html#BABHDABI

    作者回复: 是,我估计这是老版本JDK的一个Bug,文中为了演示工具使用我特意选择了这个案例来演示,平时我自己只用Xss

    2020-04-22
    2
    4
  • 梦倚栏杆
    老师,你的第一个演示我这儿直接就被杀掉了 java -jar target/java-common-mistakes-0.0.1-SNAPSHOT.jar -Xms1g -Xmx1g jps 正常 jinfo $pid 提示:Error attaching to process : Can't attach symbolicator to the process 发现进程已经被kill掉

    作者回复: 网上说是jdk的bug,仅仅发生于macos怀疑和权限有关系。遇到问题最好先自己搜索一下,尝试解决一下。

    2020-04-22
    4
    3
  • 若镜
    作为同样的一个15years+的programmer 不得不说 老师分享的足够干货 多谢。

    作者回复: 感谢

    2020-10-23
    2
  • Geek_3b1096
    重新认识用Wireshark分析问题,谢谢老师

    作者回复: 不客气

    2020-05-01
    2
  • vivi
    jmap -dump是输出堆中所有对象 jmap -dump:live是输出堆中所有活着的对象 而且jmap -dump:live会触发gc 线上使用要注意这个

    作者回复: 没错

    2020-04-21
    2
    2
  • 刘大明
    这篇定位java问题的文章,真的是打开了新天地.以前重来没有关注过jvm相关的信息,这次是开了眼界.

    作者回复: 😀

    2020-04-21
    2
收起评论
显示
设置
留言
23
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部