关于并发测试的思考--交流贴
看了很多性能测试的文章,越看越乱,搞不清楚如何才是真正的并发测试。
1.是否每次都需要重新建立http连接
看了lr的log文档,发现如果我并发10个用户,运行半个小时。lr的运行机制也许是这样,最初起10个线程,建立http连接,第一个用户的第一个请求返回结果后,并没有断开连接,继续用这个连接发送第二个请求。这个就和实际不大一样了,也许下一秒用户是新用户,是要重新建立http连接的,在发送请求等一系列操作。而lr这里省略了建立http连接操作。其实我们这半小时运行的始终都是最初的10个连接,只不过他们在不停的循环发送请求。不知这样,会不会影响我们并发测试的结果
2.如何确定并发数
开发那边提出测试需求,并发20个,看一响应时间的情况。所谓的并发20,是每秒钟运行20个请求,还是起20个线程?如果用lr进行测试,我一般都会采取面向目标测试,目标=20/sec trancations。不知道大家都是如何做的?
前几天看到篇文章,如果你在每个请求间加入思考时间,这样你的测试结果会受很大的影响。文章就在我的blog里,《调整压力测试工具》。我的理解是如果服务器处于负载状态,即进入队列的速度大于离开的速度,这个时候说明你的服务是收敛的,得出的响应时间包含着排队的时间,这个时间其实是测试工具使用不当强加上的,并不是真正的响应时间,此时你就应该加入思考时间,让进入队列的速度小于离开的速度就好了。这种测试是在服务器无负载下进行的测试,应该属于基准测试。是相对死循环的测试方法讲得。比如1s并发2个用户,如果无思考时间,进行死循环,1s的实际请求是100,而我这里要求测试每秒请求数=50,此时应该加入思考时间,使每秒的请求=50
3.用什么指标进行容量测试
我认为是吞吐量,当你不论增加多少个用户,你的吞吐量已经不能再增加,这个点就应该是服务器的最大容量了。然后再根据这个点,进行调试,得出并发数。你们觉得呢?
1.是否每次都需要重新建立http连接
看了lr的log文档,发现如果我并发10个用户,运行半个小时。lr的运行机制也许是这样,最初起10个线程,建立http连接,第一个用户的第一个请求返回结果后,并没有断开连接,继续用这个连接发送第二个请求。这个就和实际不大一样了,也许下一秒用户是新用户,是要重新建立http连接的,在发送请求等一系列操作。而lr这里省略了建立http连接操作。其实我们这半小时运行的始终都是最初的10个连接,只不过他们在不停的循环发送请求。不知这样,会不会影响我们并发测试的结果
2.如何确定并发数
开发那边提出测试需求,并发20个,看一响应时间的情况。所谓的并发20,是每秒钟运行20个请求,还是起20个线程?如果用lr进行测试,我一般都会采取面向目标测试,目标=20/sec trancations。不知道大家都是如何做的?
前几天看到篇文章,如果你在每个请求间加入思考时间,这样你的测试结果会受很大的影响。文章就在我的blog里,《调整压力测试工具》。我的理解是如果服务器处于负载状态,即进入队列的速度大于离开的速度,这个时候说明你的服务是收敛的,得出的响应时间包含着排队的时间,这个时间其实是测试工具使用不当强加上的,并不是真正的响应时间,此时你就应该加入思考时间,让进入队列的速度小于离开的速度就好了。这种测试是在服务器无负载下进行的测试,应该属于基准测试。是相对死循环的测试方法讲得。比如1s并发2个用户,如果无思考时间,进行死循环,1s的实际请求是100,而我这里要求测试每秒请求数=50,此时应该加入思考时间,使每秒的请求=50
3.用什么指标进行容量测试
我认为是吞吐量,当你不论增加多少个用户,你的吞吐量已经不能再增加,这个点就应该是服务器的最大容量了。然后再根据这个点,进行调试,得出并发数。你们觉得呢?