首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

再聊ramp-up period

在文章性能测试-工具篇-Jmeter测试计划的元素之线程组中提到了“ramp-up period”的概念:

ramp-up period在简体中文语言模式下没有翻译,可见它的中文意思并不太直观,有些文章中称其为启动时间、准备时长、加速期等等,在我看来,没有必要一定要为其取一个简短的名字,精准地理解ramp-up period的含义更为重要。

ramp-up period是指告诉Jmeter需要花费多久的时间启动全部的线程。

如果使用10个线程,并且ramp-up period是100s,那么Jmeter将花费100s的时间来完成这10个线程的启动。 这意味着,每个线程将在上一个线程开始后的100s/10=10s后启动。

同理,如果有30个线程,ramp-up period为120s,那么相邻线程的启动时间将间隔4s。

从ramp-up period的意义可知,ramp-up period应该长度适中:

ramp-up period应足够长,以防止在测试的开始时工作负载过高;

ramp-up period应足够短,避免出现第一个线程结束了,而最后一个线程还未开始的情况(除非是刻意为之)。

注意:这里的时间是指启动线程的时间,至于线程的启动需要多久,并不关注。

那么ramp-up period应该设置为多少合适呢?一个经验的做法是,先设置ramp-up period等于总线程数,然后根据需要进行上下调整。

对于该值,我有一些疑惑,先备注在这里:

ramp-up period值过大或过小对性能测试结果的具体影响?

实际测试时,是否需要针对不同的ramp-up period,得到不同的测试结果呢?

设置ramp-up period等于总线程数的依据何在?不是拍脑袋想出来的吧…

答疑解惑

除了这些疑惑,常被问起的问题还有:

为什么需要有“ramp-up period”,立刻创建出来所有的线程不是更好?

对于这个问题,有两个解释:

对于绝大多数的网址或应用,更真实的情况是并发用户逐渐递增,而不是从一开始便立即有大量并发的用户,“ramp-up period”概念的引入可以覆盖测试这个场景;

在一开始便创建出所有的线程,会浪费许多系统资源,造成较高的工作负载(带有欺骗性),而这既不真实,也非必要。

将压测的过程抽象成两个几何图形:

长方形:“ramp-up period”为0秒;

平行四边形:“ramp-up period”不为0秒;“ramp-up period”越长,平行四边形看起来就越扁。

所以,ramp-up period值过大或过小对性能测试结果是有影响的。但当平行四边形的黄色区域持续的时间足够长时,“ramp-up period”便可以忽略不计。实际测试时,黄色区域短则一二十分钟,长则数个小时,而“ramp-up period”则是以秒计算,所以实际的压测场景下基本可以忽略

至于,默认情况下,使“ramp-up period”等于总线程数。这种情况下,平行四边形的左侧三角区域可以看做是一个等边直角三角形,即测试执行开始后,每一秒时间创建一个单独的线程,这样既不会造成虚假的系统负担,也不至于持续太长时间,较为合理。

如果有兴趣,可以在实际使用时,设置不同的“ramp-up period”和测试执行时间,验证下上述结论。

参考链接

性能测试-工具篇-Jmeter测试计划的元素之线程组

https://www.quora.com/What-is-the-meaning-of-ramp-up-period-and-loop-count-in-JMeter

https://stackoverflow.com/questions/17288545/jmeter-understanding-ramp-up

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180110G031E600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券