在生产中测量J2EE应用性能(节选)
在生产中测量J2EE应用性能(原文地址:http://www.innovatedigital.com/htm_speek/speak17_index.shtml)J2EE性能测量
性能只有在你决定测量性能的时候性能才是重要的。但一些人发现在测量性能的时候,很难确定需要测量哪个度量值,而且就算他们手头上有了这些信息之后也不知道该怎么办。结果导致了很多人开始竭尽全力地获得所有相关信息。这当然也导致了系统负载过重和获得一些看起来没有意义的信息。在这样的情况下,一些人完全放弃了测量,开始凭着他们的直觉对系统性能调优。
我们当然不能这么干,而应该系统地并且一步一步地对它进行测量。首先,理解为什么要测量性能和通过这些工作你想达到一个什么目标。如果你没有一个目标,那么就没有办法去完成了。
接下来你需要理解你测量的东西和它们的意义。这可能需要创建一个模型用于跟踪你的数据。只有通过结合数据和模型,你才能获得有价值的信息。例如,预报天气需要一些数据:气温,湿度,大气压力等等。即使我知道它们的每一个值,如果我没有该地区的气候模型我还是不能预报那个地区的天气情况。原始度量值不易理解,在一个有意义的模型中度量值会更易于理解。
测量的变量
让我们开始看看我们的模型需要收集那些度量值信息。我们需要理解J2EE系统一些最基本的东西是:
反应时间(R)
吞吐量(X)
资源利用率(U)
服务请求(D)
反应时间用于测量完成一个特定请求需要花费多少时间。它是一个非常重要的度量值因为它是用户体验的一个指数。尽管这样,你必须确保你理解你测量的是什么--系统级的反应时间和Java组件级的反应时间完全不同(因为系统级包括像队列时间这样的变量)。
它同时也是不容易测量的度量值,因为它比其它的度量值更容易变化。因此你必需了解反应时间的分布。如果应用对你大部分用户的反应时间是2秒钟,而对10%用户的反应时间却是10秒钟,在这种情况下,你必须知道这个反应时间的分布,才能精确地评估该问题和解决它。这就要测量它们的反应时间并且得到它们的标准偏差,理想的情况是用一个柱状图把反应时间的分布显示出来。
吞吐量指出系统在一段时间内能执行的交易量。它是系统处理负载能力的一个很好的指数,并且通常跟反应时间结合在一起。由于它不是以用户为中心的测量,所以对于一些非交互的系统或批处理工作,它是最值得考虑的。
资源利用率是用于测量系统特定元素被利用了多少。这个度量值是系统的最底层情况的一个指数,因此对于容量规划是有用的。它也是非常容易理解的度量值,许多人通常都是从处理器和内存的利用率开始入手的,但它不是测量系统性能中最有用的。
我们发现更多使用的是处于请求中的资源。我们使用称为服务请求(D)的计算度量值显示特定资源或服务将怎样被利用。服务请求用以下公式计算:
D=U/X
这给了我们一个比较清晰的资源利用率,对于吞吐量是规范化的。
页:
[1]