课程大纲
时间 | 方向 | 内容安排 |
第一天上午 | 课程综述 | ● 什么是调优?调优的目的是什么? ● 应用系统中有哪些可调优的方向 ● 调优三板斧-帮助你快速上手调优 ● 调优的原则 ● 本套课程的目标 |
应用调优1-如何迅速发现应用系统的性能瓶颈? | ● 日志分析工具 ● 自建日志追踪体系 ● 调用链跟踪工具与对比 ● Skywalking是什么? ● 安装Skywalking ● Skywalking监控Java应用 ● Skywalking监控数据库 ● Skywalking高可用 ● Skywalking存储 ● 告警 ● 链路跟踪原理剖析 | |
应用调优2-其他监控工具 | ● 为什么要实现监控与可视化 ● 案例分享:我们应用的监控是怎么做的? ● Spring Boot Actuator实战与原理剖析 ● Spring Boot Admin - Spring Boot Actuator界面 ● Prometheus实现更为全面的监控 ● psi-probe实现传统Tomcat的监控 ● ELK实现日志监控 ● 实战1:定位应用层面性能问题的通用思路与步骤 ● 实战2:线程池调优 ● 实战3:Tomcat调优 | |
第一天下午 | 应用调优3-常用调优技巧 | ● 对象池调优详解(对象池详解 + 调优技巧) ● 连接池调优详解(连接池详解 + 调优技巧) ● 线程池调优详解(线程池详解 + 调优技巧) ● 异步化(本地 + 远程异步化) ● 分布式缓存调优详解 ● 锁优化(synchronized/ReentrantLock/ReentrantReadWriteLock/StampedLock…) ● 实战1:线程池调优实战 |
JVM调优1-理论篇 | ● JVM调优概述 ● JVM内存结构详解 ● 类加载过程详解 ● 编译器优化机制详解 ● 方法内联讲解 ● 逃逸分析、标量替换、栈上分配 ● 垃圾回收开篇 ● 垃圾回收算法讲解 ● 垃圾回收分代收集算法讲解 ● 垃圾收集器1-相关术语与新生代收集器 ● 垃圾收集器2-老年代收集器 ● 垃圾收集器3-G1收集器 ● 垃圾收集器5-如何选择垃圾收集器 ● 垃圾收集器6-垃圾收集器相关JVM参数 ● 其他垃圾收集器 ● 垃圾收集器相关JVM参数总结 | |
JVM调优2-工具篇 | ● 内置工具1-监控类工具:jps、jstat ● 内置工具2-故障排查类工具:jinfo、jmap ● 内置工具3-故障排查类工具:jstack、jhat ● 内置工具4-故障排查类工具:jcmd、jhsdb ● 内置工具5-可视化工具:jhsdb-hsdb ● 内置工具6-可视化工具:jconsole ● 内置工具7-可视化工具:VisualVM ● 内置工具8-商业授权工具:JMC ● 第三方工具1-MAT ● 第三方工具2-JITWatch | |
第二天上午 | JVM调优3-实战篇 | ● 实战1:手把手分析GC日志 ● 实战2:CPU过高问题定位 ● 实战3:内存溢出问题定位-堆内存溢出 ● 实战4:内存溢出问题定位-栈内存溢出 ● 实战5:内存溢出问题定位-方法区内存溢出 ● 实战6:内存溢出问题定位-直接内存溢出 ● 实战7:内存溢出问题定位-代码缓存区溢出 ● 实战8:定位并解决项目越来越慢的问题 |
缓存常见问题与解决方案 | ● 缓存类型与适用场景 ● 缓存回收策略 ● 缓存回收算法 ● 缓存模式详解 ● 如何提升缓存命中率 ● 缓存雪崩与解决方案 ● 无底洞问题与解决方案 ● 热点key重建与优化 ● 缓存穿透与解决方案 | |
第二天下午 | 高并发容错-Sentinel | l Sentinel是什么 l 使用Sentinel实现容错 l Sentinel Dashboard l 流控规则 l 降级规则 l 热点规则 l 系统规则 l 授权规则 l 代码配置规则 l Sentinel API l SentinelResource注解详解 l RestTemplate整合Sentinel l Feign整合Sentinel l 规则持久化 l 集群流控 |
实践中有什么模式或机制能减缓或避免烂代码以减少调优压力 | ● SonarQube是什么 ● SonarQube安装 ● SonarQube与Maven配合 ● SonarQube Scan使用 | |
操作系统调优 | ● CPU相关调优命令 ● 内存相关调优命令 ● 磁盘相关调优命令 | |
课程总结 | ● 课程总结 |