线程和迭代次数如何影响测试,什么是JMeter’;s最大螺纹极限

线程和迭代次数如何影响测试,什么是JMeter’;s最大螺纹极限,jmeter,performance-testing,Jmeter,Performance Testing,您能告诉我JMeter 2.4中用于执行负载测试的线程数的最大限制吗 在单个循环中使用所有线程,或者使用较少的线程数并初始化循环以获得相同的用户/线程数,这两者之间有什么区别吗 例如: No. of threads=500 Ramp up=1000 Loop=1 是否与 No. of threads=50 Ramp up=100 Loop=10 或者在结果上有什么不同 线程的最大数量由许多因素决定,请参见此答案 你的提议有很大的不同 “500个线程,循环1”表示同时执行一次循环的500个

您能告诉我JMeter 2.4中用于执行负载测试的线程数的最大限制吗

  • 在单个循环中使用所有线程,或者使用较少的线程数并初始化循环以获得相同的用户/线程数,这两者之间有什么区别吗

  • 例如:

    No. of threads=500
    Ramp up=1000
    Loop=1 
    
    是否与

    No. of threads=50
    Ramp up=100
    Loop=10
    
    或者在结果上有什么不同

  • 线程的最大数量由许多因素决定,请参见此答案

  • 你的提议有很大的不同

    • “500个线程,循环1”表示同时执行一次循环的500个线程
    • “50个线程,循环10”指的是在同一时间内仅50个线程执行10次循环

  • 从理论上讲,您得到的结果数量相同(500),但您对服务器的访问方式却截然不同。

    最大用户数量取决于您的操作系统、可用RAM和连接。Win XP同时限制3000个进程。Linux上有3000多个,但我不知道有多少。在测试服务器时要小心,如果在机器上启动3000个线程,则需要大量资源,测试将不真实。我建议每台机器最多启动300个用户。如果您想增加用户数量,而不是使用分布式测试(使用更多计算机作为DoS攻击)。
    理论上,请求数相同,但时间复杂度不同。

    1:当然,这在很大程度上取决于运行JMeter的机器,但如果里程数计算,我可以给你一些提示。JMeter允许您在同一个框中运行多个进程,并且它通常非常可靠,每个JMeter实例最多生成200个线程。如果您需要更多,我建议使用多个JMeter实例。一台经过一些调整的现代机器可以轻松生成500到1000条线程。使用Linux,您可能需要增加文件描述符的最大数量()

    在没有GUI的情况下运行JMeter,将报告/图形数据写入一个文件以供以后呈现,这会有很大帮助。您还必须注意您的网络限制。Gbps网络中的服务器很容易生成数千个请求,但共享54 Mbps路由器的笔记本电脑将受到更大的限制。尝试将与服务器的实际连接除以请求的大小,然后您就会知道带宽是否会限制您。请特别注意JMeter的配置,以下载或不下载HTML响应中引用的文件

    希望我能帮上忙

    2:这正是BlackGaff解释的: “500个线程,循环1”表示同时执行一次循环的500个线程。 “50个线程,循环10”指的是在同一时间内仅50个线程执行10次循环

  • 如果您的机器能够处理JMeter,我认为JMeter本身没有任何线程限制。测试的基本思想应该是,线程的切换和等待时间不应该对实际性能指标有太大的影响

  • 这两种情况之间存在巨大差异。在第一种情况下,最糟糕的情况是,您将有500个并发用户。在第二种情况下,并发用户的最大数量将是50。场景1的平均时间将大于场景2的平均时间


  • 这在创建场景和测试用例后很常见,我们需要使用JMeter运行,并且我们必须确定JMeter线程组中允许使用的用户或线程的数量。我们不想限制Load generator或JMeter实例。因此,基本上,在这两种情况下都需要调整。否则,测试的输出将毫无价值,我们将损失数小时的时间。因此,以下是我们需要考虑的事项:-

    • JMeter是一种Java工具,它与JVM一起运行。为了获得最大的能力,我们需要在执行期间为JMeter提供最大的资源。首先,我们需要增加堆大小(在JMeter bin目录中,我们得到JMeter.bat/sh)
    这意味着默认分配的堆大小最小为512MB,最大为512MB。根据您自己的电脑配置进行配置。请记住,操作系统也需要一些内存,所以不要分配所有的物理RAM

    • 然后,添加内存分配率
    NEW=-XX:NewSize=128m-XX:MaxNewSize=512m

    这意味着内存将以这种速度增加。您应该小心,因为如果您的负载生成在开始时非常高,那么这可能需要增加。请记住,如果范围过宽,它将在JVM中分割堆空间。如果是这样,垃圾收集器需要更加努力地清理

    • JMeter是JavaGUI应用程序。它还具有非GUI版本,资源密集度较低(CPU/RAM)。如果我们在非GUI模式下运行JMeter,它将消耗更少的资源,并且可以运行更多的线程

    • 禁用所有侦听器:在测试运行期间。它们仅用于调试,并用于设计所需的脚本

    应在负载测试期间禁用侦听器。启用它们会导致额外的开销,这会消耗测试中更重要的元素所需的宝贵资源

    • 始终尝试使用最新的软件。保持Java和JMeter的更新

    • 不要忘记,在存储请求和响应头时,断言结果和响应数据可能会消耗大量内存!因此,除非绝对必要,否则不要将这些值存储在JMeter上

    总之,如果JMeter脚本中不包含侦听器,在运行JMeter服务器的内部没有监控,网络开销/障碍和JMeter脚本都得到了优化,那么下面是一个粗略的计算:

    HEAP=-Xms512m –Xmx512m