Java 问题定位方法和工具
“线下不会有问题的”、 “代码不可能有问题,是系统原因吧”、“能在线上远程 debug 么?”
线上问题不同于开发期间的 bug,与运行时环境、压力、并发情况、具体的业务相关。对于线上的问题利用线上环境可用的工具,收集必要信息对定位问题十分重要。
对于导致问题的 Bug、资源瓶颈很难直观取得数据,需要根据资源使用数据、日志等信息推测问题根源。并且疑难问题的定位通常需要使用不同的方法追根溯源。
我们从众多的文章中挑选出 7 篇应对不同场景的定位技巧文章,希望能对你们的工作带来帮助。
Java 进阶:系统异常排查“三板斧”—CPU、Load、内存
作者/分享人:Dora
作为软件工程师,对于衡量系统性能的常用指标:CPU 使用率、系统负载(Load)、响应时间(RT)、每秒查询率(QPS)、并发数等,应该不陌生。通过这些指标可以量化地评价系统的状态,当系统在运行中出现问题时,这些表征系统性能的指标通常也会出现异常,从而有助于定位问题。更重要的是,大多数情况下,在系统问题爆发之前,某些指标就会显示异常,从而起到预警作用,为排查、解决问题争取时间。理解系统性能指标、掌握排查系统问题的方法,是软件工程师进阶的必备技能。
本场 Chat 主要内容:
-
详解 CPU 使用率分析及其异常排查方法; -
详解系统负载(Load)分析及其异常排查方法; -
详解内存使用率分析及其异常排查方法。
Java 线上问题排查思路与工具使用
作者/分享人:蓬蒿
作为一名 Java 程序猿,平常工作除了 coding 之外,大部分时间(70%~80%)是用来排查线上问题的。掌握 Java 服务线上问题排查思路并能够熟练排查问题常用工具/命令/平台是每一个 Java 程序猿进阶必须掌握的实战技能。线上问题从系统表象来看归结起来总共有四方面:CPU、内存、磁盘、网络。例如 CPU 使用率峰值突然飚高、内存溢出(泄露)、磁盘满了、网络流量异常、FullGC 等等问题。本场 Chat 我将分享:
-
总结 Java 服务常见的线上问题 -
Linux 常用的性能分析工具使用以及分析:top(cpu)、free(内存)、df(磁盘)、dstat(网络流量)、pstack、vmstat、strace(底层系统调用)等 -
JVM 定位问题工具:jps(进程)、jmap(内存)、jstack(线程)等 -
JVM GC 日志分析 -
实战案列分析
Java 进阶之路:深入解读 Java 异常堆栈丢失原因
作者/分享人:应书澜
基于上述堆栈,工程师可以迅速地定位问题。然而,有时异常的堆栈会“丢失”,仅能打印出异常的名字,如下所示:
java.lang.NullPointerException
如此简略的异常信息对于定位问题几乎没有意义,那么,究竟是什么原因导致这种现象出现的呢?要弄清其中缘由,还得从 Java 语言的编译、执行及优化原理谈起,本场 Chat 将为读者详细解答。本场 Chat 主要内容如下:
-
现场还原:Java 异常堆栈丢失问题; -
Java 语言的执行原理; -
JIT 编译原理; -
JVM 如何确定热点代码; -
Java 8 后时代; -
源码解读:Java 异常堆栈丢失的根因 -
总结
快速学习 Jmeter 性能测试工具
作者/分享人:靓汤
-
LR 与 JMeter 哪个更好用? -
Mac 上怎么安装 Badboy,如果没有的话有什么软件可以替代? -
Jmeter 怎么实现像 lr 那样逐步加压? -
参数值取自文件时,是顺序读取还是随机读取每一行? -
Jmeter 怎么配置多个测试机并发请求? -
B/S 架构下用 Jmeter 可以测前台的性能吗? -
前端除了用 Webpagetest 外,还有其他的工具么? -
Jmeter 压测原理与 apache bench 原理有本质上的区别吗? -
手机端使用 https: 有办法录制协议嘛?
Java 性能瓶颈分析工具
作者/分享人:蓬蒿
Java 性能优化分为很多个方面,如系统优化、算法优化、代码优化等。代码优化是程序员在研发、测试过程中通过性能瓶颈分析工具就能够快速定位并解决掉的。常见的一种场景是测试同学在对服务进行压测时,无论怎么增加并发应用的 TPS 一直保持在某个值,这个时候要怎么排查呢?通过学习本 Chat 就可以解决这些问题。例如,通过性能瓶颈分析工具 JProfiler、JMC、Tprofiler 等工具查看到代码调用链,看到自己的业务代码,从而定位到最耗时的代码位置。
本场Chat,我将分享:
-
介绍 Jprofiler 的使用方法,包括内存分析、CPU 分析、线程分析等。重点利用热点方法的调用堆栈,显示分析占用的 CPU 时间、方法执行平均耗时、调用总次数。 -
JDK 自带的 JMC 工具用来监控"本地/远程"Java 应用的性能,重点分析通过 Java 飞行器记录(JRockit Flight Recorder, JFR)来排查业务性能瓶颈问题。 -
Tprofiler 是淘宝开源的线上代码性能分析工具,利用 Tpofiler 为查找系统性能问题。
JVM 问题诊断快速入门
作者/分享人:火币集团研发中心
本场 Chat 分享主要介绍如何进行 JVM 问题诊断,在排查过程中可以使用哪些工具, 通过示例对各种工具进行简单的讲解, 并引入相关的基础知识,在此过程中,结合作者的经验和学到的知识,提出一些观点和调优建议。
内容涉及:
-
环境准备与相关设置; -
常用性能指标介绍; -
JVM 基础知识和启动参数; -
JDK 内置工具介绍和使用示例; -
JDWP 简介; -
JMX 与相关工具; -
各种 GC 日志解读与分析; -
内存 dump 和内存分析工具介绍; -
面临复杂问题时可选的高级工具; -
应对容器时代面临的挑战;
JVM 精华知识点汇总
作者/分享人:胡玉洋
JVM 是小白 Java 程序员成长路上的一道坎,学习JVM之前,只需要知道代码编译成 Class,虚拟机加载 Class 运行就可以了,学习 JVM 之后,可以深入理解代码从编译到加载的过程、内存中对象的创建与垃圾回收、日常开发中快速定位性能问题等,当然也是面试不可缺少的加分项。
咱们在这一起来探讨包含但不限于如下内容:
-
JVM 内存区域划分、作用,历史版本演变; -
JVM 各个区域内存溢出及情景再现; -
JVM 垃圾回收原理,垃圾收集器原理; -
JVM性能优化,调优经验总结; -
类加载原理,双亲委派模型,源码分析。
最后有两个福利:
-
超大超全面的 JVM 知识体系图(包含每块重点知识的解释、参考资料等)。 -
JVM 面试资料( JVM 大牛经验及数百家大型互联网公司面试经历中筛选而来)。
除了订阅以上专题外,你也可以选择成为 GitChat 会员。不仅能免费阅读所有专题文章,还能无限畅读全平台最新、最热的优质好文!此外,你还能以超低价订阅或免费阅读最新专栏哟!