【发布时间】:2010-04-21 09:29:29
【问题描述】:
我写了简单的load testing tool 来测试Java 模块的性能。我面临的一个问题是吞吐量测量算法。测试在多个线程中执行(客户端配置测试应该重复多少次),并记录执行时间。因此,当测试完成时,我们有以下历史记录:
4 test executions
2 threads
36ms overall time
- idle
* test execution
5ms 9ms 4ms 13ms
T1 |-*****-*********-****-*************-|
3ms 6ms 7ms 11ms
T2 |-***-******-*******-***********-----|
<-----------------36ms--------------->
目前我通过以下方式计算吞吐量(每秒):1000 / overallTime * threadCount。
但是有问题。如果一个线程能够更快地完成它自己的测试(无论出于何种原因):
3ms 3ms 3ms 3ms
T1 |-***-***-***-***----------------|
3ms 6ms 7ms 11ms
T2 |-***-******-*******-***********-|
<--------------32ms-------------->
在这种情况下,实际吞吐量要好得多,因为测量的吞吐量由 最慢的线程。所以,我的问题是我应该如何测量多线程环境中代码执行的吞吐量。
【问题讨论】:
标签: metrics load-testing throughput