Tuning
Java 性能调优主要从 Java 编程、多线程、JVM、设计模式、数据库等多个方面来介绍。
不过在调优之前先需要了解性能指标、性能测试、常用手段等,见下文。
性能指标
性能参考因素
CPU:计算型引用、FullGC、无限循环、多线程大量上下文切换都可能造成 CPU 繁忙。
内存:
磁盘 I/O:
异常:构建异常栈非常消耗资源。
数据库:
锁竞争:
指标
响应时间:
数据库响应时间
服务端响应时间
网络响应时间
客户端响应时间
吞吐量
磁盘吞吐量
IOPS:随机读写,如 OLTP 数据库、小文件存储等。
吞吐量:顺序读写,如视频点播等。
网络吞吐量:涉及 CPU、网卡、宽带等。
计算机资源使用率
CPU 占用率
内存使用率
磁盘 I/O 使用率
网络 I/O 使用率
系统负载
系统负载 vs CPU 利用率。系统负载表示正在运行或等待的进程或线程数,CPU 利用率表示单位时间内实时占用 CPU 的百分比。如计算密集型,CPU 利用率会很高,但是系统负载可能为 0.1;I/O 密集型,CPU 利用率可能很低,但是系统负载很高,因为很多线程可能在阻塞。
TPS vs QPS。TPS(transaction per second),QPS(query per second)。一个事务可能包含多个请求,若一个用户操作只有一个请求,那么 TPS 和 QPS 就没有区别。
性能测试
微基准测试
宏基准测试
性能测试注意的问题:
热身
结果不稳定
性能优化
代码
设计
算法
时间换空间
空间换时间
参数调优
兜底策略
限流
熔断
自动扩容
提前扩容
性能测试工具
工具
适用场景
优点
缺点
ab
单个接口的性能测试
简单实用
不能对整个业务流程测试
JMeter
简单并发测试、整个业务流程测试、组合并发测试、csv 动态导入变量
功能全,可扩展性高
性能不稳定,高并发容易造成界面卡死
LoadRunner
包括JMeter 的常用功能,可以 IP 欺骗
专业、稳定、高效
价格高
Last updated