background image

Java 性能调优概述

性能调优无疑是个庞大的话题,也是很多项目中非常重要的一环,性能调优的难做是众
所周知的,毕竟性能调优涵盖的面实在是太多了,在这篇 blog 中我们蜻蜓点水般的来看
看性能调优这项庞大的工程都有些什么过程,同时也看看这些过程中常见的一些做法。

确定性能调优的目标

性能调优,首先是要确定性能调优的目标是什么,如果现在应用已经满足了需求,就没
必要去做性能调优了,毕竟不经过一个系统的过程,其实是无法确定你所做的性能调整
是否真的调优了性能,是否没有造成应用中其他的问题,所以确定性能目标是非常重要
的,在定义性能目标的时候通常这么定义的呢:

1

 

、最大并发数

2、Quality of Service 
服务的质量,在软件系统方面我们认为主要表现在请求的出错率,系统的 load

 

等。

3

 

、最长响应时间

 

对于任何请求所能承受的最大响应时间。
4、TPS 

每秒需要支持的最大事务数,最典型的指标是: 某页面最高需要支撑每秒 7000 次的访

问次数 。
 
例如一个 web

 

系统,需要定义出来的目标是:

并发目标:最高支撑 200

 

并发;

QoS:出错率须控制在万分之一,系统的 load 最高只能到达 10

 

TPS:每秒完成 7000

 

次请求的处理;

最大响应时间:最长允许的响应时间为 5 秒。
 
至于请求的平均响应时间这些就不在性能调优目标中定义,因为要达到 TPS 的要求,响
应时间是必须要达到一个级别的,而且响应时间随着高并发是会出现劣化的。

当然,还可以把性能指标定到更为细节,例如某个方法的 TPS 在 100 并发时需要达到多

 

少。
在确定好了性能目标后,重要的就是如何来测量系统的性能了。

测量系统性能

对于新系统而言,需要评估出其正式运行时的数据量的增长情况;而对于已运行的系统 ,
则需要根据监控获取到系统的运行数据(例如高峰并发数、系统的响应速度情况、系统的