课程简介
在互联网+的今天,人们在PC、手机、Pad 上安装了各式各样的软件服务或APP,享受着互联网技术带来的高效和便捷。随着这些产品的高速发展,大家对高性能、稳定性、安全性、扩展性等方面有了更高的要求,而诞生于20多年前的Java平台,一直紧跟时代脉搏,兼收并蓄,持续优化,在编程领域交出最满意的答卷,最终成为现代互联网服务端开发的王者。当然,一种语言再强大,也不能在任何时候都能达到我们理想的状态。在实际工作中,我们会遇到非常多的性能问题,有些问题是需要在开发设计前通过规范避免的,有些问题是需要根据线上生产环境“边查边看边调整”的。很多工程师在遇到这些问题时,会根据一些浅显的表现来做很“粗暴”的处理,比如:OOM了就升配内存,CPU飙高就升核,超时异常过多就延长超时时间。。。诚然,在紧急情况下,有些处理能马上解决问题,但毕竟不是长久之计,甚至有时候会弄巧成拙。为了让大家对性能调优有更深的认识,本次课程我们会从JVM基础开始讲起,比如JVM内存模型、GC机制、堆内存分析等,然后延展开来,通过线上常见问题来实战化学习JVM的性能监控及调优策略。
目标收益
1、 对Java体系下整体性能与调优有全面的认知
2、 熟练掌握JVM内存模型以及GC调优全过程(命令行、JVisualVM、Arthas等工具 )
3、 熟练掌握服务器端调优策略与最佳实践(内存/IO/CPU等)
4、 熟练掌握代码级性能提升关注点,以及性能基准测试方法
培训对象
课程大纲
引子 | 介绍JVM内存模型及GC问题、性能优化、服务端的性能配置等 |
第一单元 JVM基础 |
1.JVM组成及运行机制 2.Java内存模型 2.1内存结构 2.2内存与线程 3.JVM参数概要 3.1启动参数格式 3.2启动参数设置 3.3常见启动参数 4.GC基础分析 4.1GC信息查看 4.2GC问题排查 (案例1:快速查看线上的GC问题) 4.3常见GC算法浅析 |
第二单元 JVM内存及调优 |
5.堆内存分析 5.1堆内存结构 5.2堆内存信息分析 5.3OOM问题及内存dump文件 5.4GC日志文件深度分析 ( 案例2:一次线上GC导致的系统卡顿问题排查过程/OOM dump信息分析 ) 6.Java线程状态分析 6.1RUNNABLE状态及分析 6.2BLOCKED状态及分析 6.3WAITING(wait/notify、join)及分析 6.4使用jstack进行死锁检测 7.内置可视化诊断工具JVisualVM 7.1功能概览与基础配置 7.2线程监控与分析 7.3内存监控与分析 7.4CPU采样分析 8.线上问题诊断工具Arthas 8.1Arthas功能概览 8.2使用Arthas查看系统全景运行时状态 8.3Arthas常见命令工具 8.4线程问题诊断 (案例3:快速找到最忙执行线程/代码) 8.5耗时问题诊断 (案例4:快速排查线上调用链耗时问题) 如何线上诊断代码级故障 |
第三单元 服务器性能调优实战 |
9.CPU与性能诊断 9.1平均负载与负载分析 9.2负载与CPU使用率 9.3CPU性能指标与工具介绍 案例5:使用vmstat、pidstat等工具进行系统高负载分析及上下文切换分析 10.内存与性能诊断 10.1内存基础知识 10.22. 内存常见指标/virt/res/buff/cache/Swap 10.3内存性能指标与问题诊断一般流程 案例6:Java Native代码导致的内存泄漏问题排查 |
第四单元 编写高性能代码 |
11.高性能代码技巧 11.1线程池选型与参数调优 11.2ThreadLocal的资源释放 12.基于JMH的性能测试 12.1JMH基本介绍 12.2JMH基本概念之Mode、Iteration、Warmup等 12.3使用JMH进行代码级性能基准测试 |
引子 介绍JVM内存模型及GC问题、性能优化、服务端的性能配置等 |
第一单元 JVM基础 1.JVM组成及运行机制 2.Java内存模型 2.1内存结构 2.2内存与线程 3.JVM参数概要 3.1启动参数格式 3.2启动参数设置 3.3常见启动参数 4.GC基础分析 4.1GC信息查看 4.2GC问题排查 (案例1:快速查看线上的GC问题) 4.3常见GC算法浅析 |
第二单元 JVM内存及调优 5.堆内存分析 5.1堆内存结构 5.2堆内存信息分析 5.3OOM问题及内存dump文件 5.4GC日志文件深度分析 ( 案例2:一次线上GC导致的系统卡顿问题排查过程/OOM dump信息分析 ) 6.Java线程状态分析 6.1RUNNABLE状态及分析 6.2BLOCKED状态及分析 6.3WAITING(wait/notify、join)及分析 6.4使用jstack进行死锁检测 7.内置可视化诊断工具JVisualVM 7.1功能概览与基础配置 7.2线程监控与分析 7.3内存监控与分析 7.4CPU采样分析 8.线上问题诊断工具Arthas 8.1Arthas功能概览 8.2使用Arthas查看系统全景运行时状态 8.3Arthas常见命令工具 8.4线程问题诊断 (案例3:快速找到最忙执行线程/代码) 8.5耗时问题诊断 (案例4:快速排查线上调用链耗时问题) 如何线上诊断代码级故障 |
第三单元 服务器性能调优实战 9.CPU与性能诊断 9.1平均负载与负载分析 9.2负载与CPU使用率 9.3CPU性能指标与工具介绍 案例5:使用vmstat、pidstat等工具进行系统高负载分析及上下文切换分析 10.内存与性能诊断 10.1内存基础知识 10.22. 内存常见指标/virt/res/buff/cache/Swap 10.3内存性能指标与问题诊断一般流程 案例6:Java Native代码导致的内存泄漏问题排查 |
第四单元 编写高性能代码 11.高性能代码技巧 11.1线程池选型与参数调优 11.2ThreadLocal的资源释放 12.基于JMH的性能测试 12.1JMH基本介绍 12.2JMH基本概念之Mode、Iteration、Warmup等 12.3使用JMH进行代码级性能基准测试 |