在我的应用程序中,当我在线程(No:of threads)中为1个http请求执行2000个虚拟用户时,我的响应时间为30秒,当我将没有线程更改为500而不是1个http请求时,我放了4个副本相同的http请求,响应时间为3秒。有什么不同?这是减少线程数量和增加请求副本的正确方法吗?请帮忙 注意:在每次请求中我都更改了用户ID
答案 0 :(得分:0)
就HTTP Request采样器而言,您的测试必须与真正的浏览器行为完全相同,因此人为添加更多HTTP请求可能(并且将会)破坏您的工作负载的逻辑(如果它已到位)。
在您的情况下,高响应时间似乎是由不正确的JMeter配置引起的,即如果JMeter没有正确配置为高负载,它将无法足够快地触发请求,从而导致响应时间增加,而您的服务器将只是闲。
2000个线程听起来相当大,所以请确保:
遵循9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure的建议,尤其是:
答案 1 :(得分:0)
扩展@Dmitri T答案,如果您的服务器响应加载10倍,当您执行2000个虚拟用户时,这意味着您需要识别瓶颈。
阅读JMeter的Best Practices
考虑使用distributed mode在多台计算机上运行多个非GUI JMeter实例
同时选中“线程组”中的Delay Thread creation until needed
复选框
JMeter可以选择延迟线程创建,直到线程开始采样,即在任何线程组延迟和线程本身的加速时间之后。这允许非常大的线程总数,前提是没有太多的线程同时处于活动状态。
并将Thread Group Ramp-up设置为2000
从Ramp-up开始=线程数量,并根据需要调高或调低。