目录
一、性能测试的4项原则
原则一、应该在产品实际使用的环境中进行性能测试
原则二、理解批处理流逝时间、吞吐量和响应时间
1、批处理流逝时间(简单来说就是针对批处理,需要考虑代码的冷启动问题,以及数据库的缓存问题)
即时编译(JIT):虚拟机会发几分钟(或者更长的时间)全面优化代码并以最高性能执行。
由于这个原因(以及其他原因),研究java的性能就要密切注意代码优化的热身期:
大多数时候,应该在运行代码执行时间足够长时间,已经编译并优化之后再测试性能
2、吞吐量
吞吐量测试是基于一段时间内所完成的工作量
每秒钟事务数TPS
每秒钟请求书RPS
每秒钟操作次数OPS
3、响应时间
从客户端发送请求至收到响应之间的时间流逝
平均响应时间
大多数请求的响应时间(如第90百分位响应时间,就是百分之九十的请求响应时间)
离群值响应时间
原则三、用统计方法应对性能的变化(没看明白???)
因代码更改而进行的测试称为回归测试
原则四、尽早频繁测试
收集的信息
CPU使用率、磁盘使用率、网络使用率、内存使用率
应用产生的日志、GC日志、堆栈信息
数据库日志信息
二、性能测试的简单三分类
1、微基准测试
用来测量微小代码单元的性能,包括调用同步方法用时与非同步方法用时比较,创建线程的代价和使用线程池的代价,执行某种算法的耗时与其其他替代实现的耗时等等。
2、宏基准测试(测试全应用)
简单来说就是对真个系统的各个模块进行测试,因为这个系统的性能可能卡在短板的地方,你在其他地方优化,对系统整体的优化也许没什么改变,如下图所示
涉及到自己业务代码处理的在计算模块,即使把请求速度提升带200RPS,但是因为数据库的装载速度才为100RPS,依旧没能提升系统的性能,因此我们再系统出现性能问题的时候首先需要定位瓶颈在哪里,然后再做优化。
3、介基准测试
介于微基准测试和宏基准测试之间
小知识点:
1、LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP;
示例代码:
https://github.com/ScottOaks/JavaPerformanceTuning
参考:
java性能优化权威指南