4006-998-758
3000+课程任你选择
Java故障排查及工具最佳实践
研发学院 Java类加载器概览 Java内存模型 线上问题诊断工具Arthas 开课时间:2022-04-12
杜云飞

从事开发和架构工作近10年,擅长Java体系下各类技术栈、精通微服务、分布式、高并发解决方案,并拥有 HBase/Hadoop、Flink等大数据平台架构经验,在小虫科技负责研发线所有产品技术架构、团队管理等工作,开发了多款金融、风控大数据、 电商、区块链等产品。

曾出版技术书籍《Akka 实战:快速构建高可用分布式应用》,受到多位业界知名技术专家联名推荐作序。同时也受邀为阿里高级技术专家周立《Spring Cloud与 Docker 微服务架构实战》作序推荐,该书是国内首本原创相关书籍。目前担任多家公司高级技术顾问,提供技术分享、培训和咨询等服务。


查看老师详情
课程内容

课程介绍


在互联网+的今天,人们在PC、手机、Pad 上安装了各式各样的软件服务或APP,享受着互联网技术带来的高效和便捷。随着这些产品的高速发展,大家对高性能、稳定性、安全性、扩展性等方面有了更高的要求,而诞生于20多年前的Java平台,一直紧跟时代脉搏,兼收并蓄,持续优化,在编程领域交出最满意的答卷,最终成为现代互联网服务端开发的王者。当然,一种语言再强大,也不能在任何时候都能达到我们理想的状态。在实际工作中,我们会遇到非常多故障或性能问题,有些问题是需要在开发设计前通过规范避免的,有些问题是需要根据线上生产环境“边查边看边调整”的。很多工程师在遇到这些问题时,会根据一些浅显的表现来做很“粗暴”的处理,比如:OOM了就升配内存,CPU飙高就升核,超时异常过多就延长超时时间。诚然,在紧急情况下,有些处理能马上解决问题,但毕竟不是长久之计,甚至有时候会弄巧成拙。

   那么,Java工程师该如何才能做好故常排查和稳定性保障呢?

 讲师认为,工程师除了要掌握日常编程技巧之外,还需要了解更多底层知识,这样才能在排查故障时快速分析根因,及时找到最合理的解决方案。本次课程会根据一些常见问题的核心底层基础知识讲起,然后分别对每个知识点以及可能产生的故障展开讲解,同时,讲师会介绍一系列问题排查工具的使用方法,让大家从理论到实操都有成长与收获!


课程收益


1、熟练掌握Java高并发之:多线程编程(JUC),并学会处理多线程故障处理;

2、熟练掌握Java高并发之:锁机制,并学会正确处理线程安全问题;

3、了解JVM类加载器及底层运行机制;

4、熟练掌握JVM内存调优、GC问题排查;

5、熟练掌握线上常见故障诊断;

6、熟练掌握常见的故障排查工具箱。


课程对象


从事Java的开发人员、测试人员以及对Java感兴趣的人员。


课程大纲


主题

内容

课程大纲

 

 

 

 

 

 

 

 

 

第一单元

Java多线程编程(5H)

 

 

 

 

 

 

 

 

 

 

 

该单元介绍Java多线程基础知识,比如Thread/Runnable API、线程状态/生命周期、同步锁

 

1.多线程基础

1.1. 多线程基础介绍

1.2. 线程创建之Thread/Runnable

1.3. 线程状态及生命周期(NEW、RUNNABLE、RUNNING、BLOCKED、TERMINATED)

1.4. Thread   API(sleep、yield、join等)

2.线程安全

2.1线程安全问题的本因

 (案例:如何避免编写一个不安全的业务逻辑?)

2.2   Synchronized关键字详解

2.3线程间数据隔离之ThreadLocal

  (案例:调用链跟踪系统是如何使用ThreadLocal的,可能会出现哪些问题?)

3.线程池应用

3.1线程池基础

3.2使用并发包JUC

3.3锁机制及API支持

4.线程间通信

4.1   了解wait、notify

4.2   生产者-消费者模式(案例:队列缓冲在任务处理中的应用以及常见故障处理)

 

第二单元

JVM类加载器及底层运行机制(2H)

 

该单元会首先介绍Java类加载器基础知识,然后分别介绍根加载器、扩展类加载器、系统类加载器,最后会介绍自定义类加载器

 

1. Java类加载器概览

1.1 类加载器基础

1.2 类加载器过程

2.   Java类加载器分类

2.1 根类加载器

2.2 扩展类加载器

2.3 系统类加载器

2.4 自定义类加载器

 

 

 

 

第三单元

JVM内存及调优(6H)

 

 

 

 

该单元主要讲解JVM底层运行机制、Java内存模型(JMM)、GC日志分析、堆内存分析及问题排查

1. JVM运行机制

2. Java内存模型

3.   GC分析

3.1   GC信息查看

3.2   GC问题排查

(案例:快速查看线上的GC问题)

4. 堆内存分析

4.1 堆内存结构

4.2 堆内存信息分析

4.3 OOM问题及内存dump文件

(案例:一次线上GC导致的系统卡顿问题排查过程/OOM   dump信息分析)

5. 常见启动参数设置

5.1 GC日志配置

5.2 内存配置

5.3 其他常见配置

6. 线上问题诊断工具Arthas

6.1 线程问题诊断

(案例:快速找到最忙执行线程/代码)

6.2 耗时问题诊断

(案例:快速排查线上调用链耗时问题)

6.3 内存及CPU问题诊断

 










返回上一级