线程和迭代次数如何影响测试以及JMeter的最大值.线程限制

Par*_*vez 30 jmeter performance-testing

  1. 你能告诉我没有的最大限制吗?我可以在JMeter 2.4中用于进行负载测试的线程吗?

  2. 在单个循环中采用所有线程或采用较少的no是否有任何区别.线程和初始化循环实现相同的没有.用户/线程?

例:

No. of threads=500
Ramp up=1000
Loop=1 
Run Code Online (Sandbox Code Playgroud)

是否与...相同

No. of threads=50
Ramp up=100
Loop=10
Run Code Online (Sandbox Code Playgroud)

或者结果有什么不同?

Bla*_*aff 22

  1. 最大线程数由很多因素决定,请参阅此答案/sf/answers/834556761/

  2. 你提出的建议有很大的不同.

    • "500个线程,循环1"表示500个线程在同一时间执行循环ONCE.
    • "50个线程,循环10"表示同时只有50个线程执行循环十次.

从理论上讲,您获得相同数量的结果(500),但是您以非常不同的方式访问服务器.


Bal*_*lon 9

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


小智 5

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

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

希望我能够提供帮助.

2:正是BlackGaff所解释的:"500个线程,循环1"意味着500个线程在同一时间执行循环ONCE."50个线程,循环10"表示同时只有50个线程执行循环十次.


Adn*_*nan 5

在创建场景和测试用例之后,这种情况非常常见,我们需要使用JMeter运行,并且我们必须修复允许在JMeter线程组中使用多少用户或线程的值.我们不想限制我们的Load发生器或我们的JMeter实例.所以基本上,在两种情况下都需要调整.否则,测试的输出将毫无价值,我们将失去我们的时间.以下是我们需要考虑的事项: -

  • JMeter是一个与JVM一起运行的Java工具.为了获得最大的能力,我们需要在执行期间为JMeter提供最大的资源.首先,我们需要增加堆大小(在JMeter bin目录内,我们得到jmeter.bat/sh)
HEAP=-Xms512m –Xmx512m
Run Code Online (Sandbox Code Playgroud)

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

  • 然后,添加内存分配率

NEW=-XX:NewSize=128m -XX:MaxNewSize=512m

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

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

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

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

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

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

总而言之,如果JMeter脚本中没有包含监听器,则运行JMeter服务器,网络开销/障碍和JMeter脚本内部的监控都没有优化,这里是一个粗略的计算:

The total number of concurrent user = (total allocable memory)/(Size of all requests)

您必须仅根据负载方案估计并发数量的用户/线程(活动线程).

此外,您还需要监控是否您的服务器Memory consumption,CPU usages运行在80%以下或没有.如果这些用法超过80%,则认为这些测试不如报告那么可靠.

为了更好,更精细地理解这两个博客JMeter可以支持多少用户?9级的JMeter的负载测试"内存不足"简单的解决方案失败必须帮忙.