vlambda博客
学习文章列表

Java 问题定位方法和工具


“线下不会有问题的”、 “代码不可能有问题,是系统原因吧”、“能在线上远程 debug 么?”

线上问题不同于开发期间的 bug,与运行时环境、压力、并发情况、具体的业务相关。对于线上的问题利用线上环境可用的工具,收集必要信息对定位问题十分重要。

对于导致问题的 Bug、资源瓶颈很难直观取得数据,需要根据资源使用数据、日志等信息推测问题根源。并且疑难问题的定位通常需要使用不同的方法追根溯源。

我们从众多的文章中挑选出 7 篇应对不同场景的定位技巧文章,希望能对你们的工作带来帮助。

点击图片,查看完整专题

Java 进阶:系统异常排查“三板斧”—CPU、Load、内存

作者/分享人:Dora

作为软件工程师,对于衡量系统性能的常用指标:CPU 使用率、系统负载(Load)、响应时间(RT)、每秒查询率(QPS)、并发数等,应该不陌生。通过这些指标可以量化地评价系统的状态,当系统在运行中出现问题时,这些表征系统性能的指标通常也会出现异常,从而有助于定位问题。更重要的是,大多数情况下,在系统问题爆发之前,某些指标就会显示异常,从而起到预警作用,为排查、解决问题争取时间。理解系统性能指标、掌握排查系统问题的方法,是软件工程师进阶的必备技能。

本场 Chat 主要内容:

  1. 详解 CPU 使用率分析及其异常排查方法;
  2. 详解系统负载(Load)分析及其异常排查方法;
  3. 详解内存使用率分析及其异常排查方法。

Java 线上问题排查思路与工具使用

作者/分享人:蓬蒿

作为一名 Java 程序猿,平常工作除了 coding 之外,大部分时间(70%~80%)是用来排查线上问题的。掌握 Java 服务线上问题排查思路并能够熟练排查问题常用工具/命令/平台是每一个 Java 程序猿进阶必须掌握的实战技能。线上问题从系统表象来看归结起来总共有四方面:CPU、内存、磁盘、网络。例如 CPU 使用率峰值突然飚高、内存溢出(泄露)、磁盘满了、网络流量异常、FullGC 等等问题。本场 Chat 我将分享:

  1. 总结 Java 服务常见的线上问题
  2. Linux 常用的性能分析工具使用以及分析:top(cpu)、free(内存)、df(磁盘)、dstat(网络流量)、pstack、vmstat、strace(底层系统调用)等
  3. JVM 定位问题工具:jps(进程)、jmap(内存)、jstack(线程)等
  4. JVM GC 日志分析
  5. 实战案列分析

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,我将分享:

  1. 介绍 Jprofiler 的使用方法,包括内存分析、CPU 分析、线程分析等。重点利用热点方法的调用堆栈,显示分析占用的 CPU 时间、方法执行平均耗时、调用总次数。
  2. JDK 自带的 JMC 工具用来监控"本地/远程"Java 应用的性能,重点分析通过 Java 飞行器记录(JRockit Flight Recorder, JFR)来排查业务性能瓶颈问题。
  3. Tprofiler 是淘宝开源的线上代码性能分析工具,利用 Tpofiler 为查找系统性能问题。

JVM 问题诊断快速入门

作者/分享人:火币集团研发中心

本场 Chat 分享主要介绍如何进行 JVM 问题诊断,在排查过程中可以使用哪些工具, 通过示例对各种工具进行简单的讲解, 并引入相关的基础知识,在此过程中,结合作者的经验和学到的知识,提出一些观点和调优建议。

内容涉及:

  • 环境准备与相关设置;
  • 常用性能指标介绍;
  • JVM 基础知识和启动参数;
  • JDK 内置工具介绍和使用示例;
  • JDWP 简介;
  • JMX 与相关工具;
  • 各种 GC 日志解读与分析;
  • 内存 dump 和内存分析工具介绍;
  • 面临复杂问题时可选的高级工具;
  • 应对容器时代面临的挑战;

JVM 精华知识点汇总

作者/分享人:胡玉洋

JVM 是小白 Java 程序员成长路上的一道坎,学习JVM之前,只需要知道代码编译成 Class,虚拟机加载 Class 运行就可以了,学习 JVM 之后,可以深入理解代码从编译到加载的过程、内存中对象的创建与垃圾回收、日常开发中快速定位性能问题等,当然也是面试不可缺少的加分项。

咱们在这一起来探讨包含但不限于如下内容:

  1. JVM 内存区域划分、作用,历史版本演变;
  2. JVM 各个区域内存溢出及情景再现;
  3. JVM 垃圾回收原理,垃圾收集器原理;
  4. JVM性能优化,调优经验总结;
  5. 类加载原理,双亲委派模型,源码分析。

最后有两个福利:

  1. 超大超全面的 JVM 知识体系图(包含每块重点知识的解释、参考资料等)。
  2. JVM 面试资料( JVM 大牛经验及数百家大型互联网公司面试经历中筛选而来)。

除了订阅以上专题外,你也可以选择成为 GitChat 会员。不仅能免费阅读所有专题文章,还能无限畅读全平台最新、最热的优质好文!此外,你还能以超低价订阅或免费阅读最新专栏哟!