我使用jmeter来生成一个性能测试,为了保持简洁,我从一个json文件中读取初始数据,我有一个单线程组,在读取数据后,我在其中随机设置某些值,以防止需要时数据重复,然后我使用变量将最终数据传递给endpoint,这将最终在一个由endpoint接收的json主体中,它基本上将在数据库中生成一个新的事务。此外,我添加了一个常量计时器,在请求之间添加了7秒的延迟,测试持续时间为10分钟,没有上升,我计算每秒的请求如下所示:
1分钟有60秒,每个请求有7秒的延迟,那么可以说,每分钟我发送大约8.5个请求,这是我的计算(60/7)=8.5,如果测试持续10分钟,那么我乘(8.5*10)=85,在10分钟内总共有85个事务,所以在测试完成后,我应该能够看到数据库中创建的完全相同数量的事务。
当我运行10-20-40个用户时,这是真的,在负载测试运行后,我查询数据库,我得到了完全相同的事务数。然而,当我增加线程组中的用户时,这种情况就不再发生了,例如,如果我设置1000个用户,我应该能够在10分钟内生成8500个事务,但事实并非如此,db只创建了大约5.1k个事务。
发生了什么,出了什么问题?为什么它最初按预期工作,而当我增加用户时,它就不工作了?如果需要,我可以提供更多的信息。请帮忙。
这可能有两个原因:
>
您发现了应用程序瓶颈。当您添加更多的用户时,应用程序响应时间会增加,因此吞吐量会降低。有一个术语叫做饱和点,它代表系统的最大性能,如果你超过这个点--系统将响应更慢,你将得到比最初更少的TPS。从测试中的应用程序来看,您应该了解以下几个方面:
JMeter发送请求的速度不够快
我如何才能为并行请求获得相同的性能?这是线程池问题吗?
我在分析Wireshark时注意到了这一点。在线程组下,这些请求是: 主页/帐户/登录 主页/ 主页/livealarm等。 测试脚本由blazemeter chrome插件记录。 另一个无意的请求HTTP GET/signalr/hubs HTTP/1.1\r\n是由jmeter发送的,但它也是在使用浏览器时发送的。因为它不在示例列表中,所以“Accept”字段在browser和JMeter之间
我有一个restful请求,需要使用JMeter将其发送到webservice。以下是我的建议: 异常:服务器11.92.0.91在org.apache.commons.httpclient.httpmethodbase.readstatusline(httpmethodbase.java:1976)在org.apache.commons.httpclient.httpmethodbase.jav
在JMETER中,高级选项下的Http请求,我选择了'IP/Hostname'并添加了IP地址。我还将目标IP添加到计算机中的“高级TCP/IP设置”中,但仍然得到以下错误: 在org.apache.http.conn.socket.plainConnectionSocketFactory.connectSocket(plainConnectionSocketFactory.java:72)在or
发送请求 发送同步请求 Web3j web3 = Web3j.build(new HttpService()); // defaults to http://localhost:8545/ Web3ClientVersion web3ClientVersion = web3.web3ClientVersion().send(); String clientVersion = web3Client
我有一个小的Spring Boot API在docker中运行。下面显示的是我用来升级容器的命令。 然后,我有一个停靠的JMeter,我使用下面的命令来启动它 但是所有的测试都失败了,请求没有被发送到API。这就是JMeter的CLI的外观 请求的测试配置: 协议:htttp 服务器:localhost 端口:8080 方法:GET 路径:/api/factorial 完整的bash文件如下所示: