线程和迭代次数如何影响测试,JMeter的最大线程限制是多少

t1rydlwq  于 2022-11-09  发布在  其他
关注(0)|答案(6)|浏览(292)

1.您能告诉我在JMeter 2.4中进行负载测试时可以使用的线程数的最大限制吗?
1.在单个循环中使用所有线程,或者使用较少数量的线程并初始化循环以实现相同数量的用户/线程,这两者之间是否有区别?
示例:

No. of threads=500
Ramp up=1000
Loop=1

是否与

No. of threads=50
Ramp up=100
Loop=10

或者在结果上有什么不同?

8hhllhi2

8hhllhi21#

1.线程的最大数量由许多因素决定,请参见此答案https://stackoverflow.com/a/11922239/460802

  • 你的提议有很大的不同。
  • “500个线程,循环1“表示500个线程同时执行一次循环。
  • “50个线程,循环10”意味着只有50个线程同时循环10次。

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

o0lyfsai

o0lyfsai2#

最大用户数取决于您的操作系统,免费的内存和连接。Win XP被限制为3000个进程在同一时间。在Linux上是超过3000,但我不知道多少。小心,你测试服务器,如果你启动3000线程在你的机器上需要大量的资源,测试将是不真实的。我喜欢启动最大300用户每台机器。如果你想增加用户数量那么就使用分布式测试(使用更多的机器作为DoS攻击).理论上是同样数量的请求但是时间复杂度是不一样的。

ecfdbz9o

ecfdbz9o3#

在创建场景和测试用例后,这是非常常见的,我们需要使用JMeter运行,并且我们必须确定在JMeter线程组中允许使用多少用户或线程的值。我们不想限制负载生成器或JMeter示例。因此,基本上,在这两种情况下都需要调整。否则,测试的结果将毫无价值,我们将损失几个小时的时间。因此,以下是我们需要考虑的事情:

*JMeter是一个Java工具,它与JVM一起运行。要获得最大的性能,我们需要在执行期间为JMeter提供最大的资源。首先,我们需要增加堆大小(在JMeter bin目录中,我们得到jmeter.bat/sh)

HEAP=-Xms512m –Xmx512m

这意味着默认分配的堆大小是最小512 MB,最大512 MB。根据您自己的PC配置进行配置。请记住,操作系统也需要一定数量的内存,所以不要分配所有的物理RAM。

  • 然后,添加内存分配率

NEW=-XX:NewSize=128m -XX:MaxNewSize=512m
这意味着内存将以这个速率增加。您应该小心,因为,如果您的负载生成在开始时非常高,这可能需要增加。请记住,如果范围太宽,它将使JVM内的堆空间碎片化。如果是这样,垃圾收集器需要更努力地清理。

  • JMeter是Java GUI应用程序。它也有非GUI版本,资源密集度较低(CPU/RAM)。如果我们在非GUI模式下运行JMeter,它将消耗更少的资源,我们可以运行更多的线程。
    *禁用所有监听程序:在测试运行期间。它们仅用于调试和设计所需的脚本。
    侦听器应在负载测试期间禁用。启用侦听器会导致额外的开销,这会消耗测试中更重要的元素所需的宝贵资源。
  • 始终尝试使用最新的软件。保持您的Java和JMeter更新。
  • 不要忘记,当涉及到存储请求和响应头时,Assert结果和响应数据会消耗大量内存!因此,除非绝对必要,否则尽量不要在JMeter上存储这些值。

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

一个月一个月

您必须仅根据您的负载方案来估计您的并发用户/线程(活动线程)数。
此外,您还需要监视服务器
Memory consumption
CPU usages的运行是否低于80%。如果这些使用率超过80%,则认为这些测试与报告一样不可靠。
为了更好更详细地理解这两个博客How many users JMeter can support?9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure必须有所帮助。

sdnqo3pr

sdnqo3pr4#

一句话:当然,这在很大程度上取决于运行JMeter的机器,但是如果有必要的话,我可以给予您一些提示。JMeter允许您在同一个机器中运行多个进程,并且通常非常可靠,每个JMeter示例最多可以生成200个线程。如果您需要更多的线程,我建议使用多个JMeter示例。一台现代机器经过一些调整可以轻松地生成500到1000个线程。使用Linux,您可能需要增加文件描述符的最大数量(see here)中的一个。
在没有GUI的情况下运行JMeter,将报表/图形数据写入一个文件中,以便稍后呈现,这会有很大的帮助。您还必须注意您的网络限制。对于Gbps网络中的服务器来说,生成数千个请求是很容易的,但共享54 Mbps路由器的笔记本电脑将受到更多限制。尝试将您与服务器的实际连接除以请求的大小。然后您就会知道带宽是否会限制您。要特别注意JMeter的配置,以下载或不下载HTML响应中引用的文件。
希望我能帮上忙。
2.这正是BlackGaf所解释的:“500个线程,循环1“表示500个线程同时执行一次循环。“50个线程,循环10”表示只有50个线程同时执行十次循环。

tv6aics1

tv6aics15#

Jmeter中的线程执行没有限制。因为它是基于java的工具,所以它使用java线程功能。在并发线程执行的情况下,我们需要注意机器配置(即内存大小和CPU)。
要避免OutOfMemory问题,请尝试在apache-jmeter/bin/jmeter内的jmeter脚本中使用自定义java运行时参数在NON-GUI模式下运行jmeter。默认值为512 MB。

8wigbo56

8wigbo566#

1.我不认为JMeter本身有任何线程限制,只要你的机器可以处理它。测试的基本思想应该是,线程的切换和等待时间不应该对实际性能指标有太大的影响。
1.这两种情况有很大的不同。在第一种情况下,最坏的情况是有500个并发用户。在第二种情况下,最大并发用户数为50。情况1的平均时间将大于情况2的平均时间。

相关问题