Jmeter性能测试-jp@gc

摘要:
不要担心当线程数量太大时,RPS会超过EndRPS。该组件将自动延迟线程的运行,以稳定RPS。

本文参考了:https://www.cnblogs.com/yagao/p/12614175.html

 

Throughput Shaping Timer 是用来控制吞吐量的定时器,通过延缓线程运行来整体控制取样器产生的RPS。

实际使用中:

1. 可以通过设置在不同吞吐量分别持续一段时间,考察系统在不同吞吐量情况下的稳定性

2. 可以通过设置随着时间持续增加的吞吐量,来探测系统吞吐量的的极限

 

举个例子:

1. 首先,创建一个线程组,这里我把线程数暂且设置为200,循环勾选为永远。在文章末尾解释为什么这样设置

Jmeter性能测试-jp@gc第1张

 

 2. 在线程组内增加一个HTTP请求,这里以百度举个例子

Jmeter性能测试-jp@gc第2张

 

 3. 加入Throughput Shaping Timer 定时器,设置起始终止RPS和持续时间,这里我采用了持续增加的方式。 

Jmeter性能测试-jp@gc第3张

 

 4. 加入一个TPS监听器并执行测试看看效果,如下图所示: 随着时间的增加RPS逐步提升,实际的TPS也随之线性增长,说明目前还没有到服务器的极限

Jmeter性能测试-jp@gc第4张

 

注意:

 End RPS 设置了RPS 上限,但要达到此值是需要线程(虚拟用户〉来执行的,所以我们先要预设够多的线程,不然RPS目标没法达到,JMeter 线程组在运行过程中是不会自动增加线程数的,只能一次性设置。下面有个计算线程数的公式。

比如一个请求响应时间为2秒,END RPS 为30,那么线程数:2*30=60  即:响应时间*RPS=所需线程数)。即大约要60个线程, 考虑到运行时诸多影响因素(线程数增加后响应时间增加了), 我们还需要预备更多的线程,也许我们加到70个线程才能满足要求,这只是一个估算值。不用担心线程数太多时RPS 会超End RPS, 此元件会自动延迟线程的运行来稳定RPS。

另外,线程组设置的循环是永远,但是因为有定时器的存在,脚本并不会停不下来,而是在定时器的时间结束后,脚本就会停止运行。

 

免责声明:文章转载自《Jmeter性能测试-jp@gc》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[译]AngularJS $apply, $digest, 和$evalAsync的比较NETTY4中的BYTEBUF 内存管理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mysql_【MySQL】常见的mysql 进程state

Analyzing 线程是对MyISAM 表的统计信息做分析(例如, ANALYZE TABLE )。 checking permissions 线程是检查服务器是否具有所需的权限来执行该语句。 Checking table 线程正在执行表检查操作。 cleaning up 线程处理一个命令,并正准备以释放内存和重置某些状态变量。 closing tabl...

使用多线程时,传递 request 对象丢失

1.原因描述 我们在工作中遇到耗时的一些操作时我们会使用多线程或者mq来解决以便提高程序的响应速度。但是使用多线程时遇到一个问题,我单独开一个线程去进行其他逻辑处理时,在发送消息之前(未开启多线程时)我们是可以获取到 request 信息的,但是在新开的线程中确是无法获取到 request 信息(request is  null)。 2.代码演示 主线程代...

【转载】通过服务端监控结果,说说WCF的并发处理

InstanceContextMode表示的是,WCF允许产生可用来处理包含在传入消息中的调用的服务(契约类)的实例InstanceContext模式数,WCF的并发模式ConcurrencyMode是针对某个封装了服务实例的InstanceContext而言的 简单的说,InstanceContextMode表示产生多少个服务实例对象,Concurren...

Windows 服务器上的 WordPress 站点优化笔记

2020年5月初,码农很忙进行了一次服务器迁移。除了 IP 地址变更之外,服务器系统也从 Windows Server 2019 降级为 Windows Server 2008 同时将 PHP 环境升级至 PHP 7.4.5 。 在完成 IIS 的安装后,将 PHP 7.4.5 nts 版本以 FastCGI 方式整合在 IIS 上,采用 php.ini-...

多线程并发详解

一、Java 线程实现/创建方式   注意:   • 新建的线程不会自动开始运行,必须通过start( )方法启动   • 不能直接调用run()来启动线程,这样run()将作为一个普通方法立即执行,执行完毕前其他线程无法并发执行   • Java程序启动时,会立刻创建主线程,main就是在这个线程上运行。当不再产生新线程时,程序是单线程的  1.1 继承...

IO与线程状态

这几天在看IO和NIO, 说IO是阻塞的,当多个IO访问服务器时,发生阻塞的时候,CPU要不停的轮询每个IO的线程,看哪个IO的阻塞解除。会浪费CPU资源。 然后我看了线程的状态分类,专门有人说过阻塞和同步是不一样的。 1、新建状态(New):新创建了一个线程对象。 2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法...