请告诉我没有的最大限制。我可以在JMeter 2.4中用于进行负载测试的线程吗?
在单个循环中获取所有线程或减少不是没有任何区别。线程和初始化循环实现相同的没有。用户/线程?
示例:
No. of threads=500
Ramp up=1000
Loop=1
是否与
相同No. of threads=50
Ramp up=100
Loop=10
或者结果有什么不同吗?
答案 0 :(得分:21)
最大线程数由很多因素决定,请参阅此答案https://stackoverflow.com/a/11922239/460802
你提出的建议有很大的不同。
从理论上讲,你得到相同数量的结果(500),但是你以一种非常不同的方式击中了服务器。
答案 1 :(得分:9)
最大用户数取决于您的操作系统,可用内存和连接。 Win XP同时限制为3000个进程。在Linux上超过3000但我没有多少。小心你测试服务器,如果你的机器上启动3000线程需要大量资源,测试将不是真实的。我预先为每台机器启动最多300个用户。如果要增加用户数而不是使用分布式测试(使用更多计算机作为DoS攻击)。 理论上是相同数量的请求,但时间复杂度并不相同。
答案 2 :(得分:5)
1:当然,这很大程度上取决于运行JMeter的机器,但如果里程数很重要,我可以给你一些提示。 JMeter允许您在同一个框中运行多个进程,并且通常非常可靠,每个JMeter实例最多可生成200个线程。如果您需要更多,我建议使用多个JMeter实例。具有一些调整功能的现代机器可轻松生成500到1000个线程。使用Linux,您可能需要增加文件描述符的最大数量(see here)。
在没有GUI的情况下运行JMeter很有帮助,将报告/图形数据写入稍后要呈现的文件中。您还必须注意您的网络限制。 Gbps网络中的服务器很容易产生数千个请求,但共享54 Mbps路由器的笔记本电脑将受到更多限制。尝试按请求的大小划分您与服务器的实际连接,然后您就会知道带宽是否会限制您。请特别注意JMeter的配置,以下载或不下载HTML响应中引用的文件。
希望我能够提供帮助。
2:这正是BlackGaff所解释的: “500个线程,循环1”表示500个线程在同一时间执行循环ONCE。 “50个线程,循环10”表示同一时间只有50个线程执行循环十次。
答案 3 :(得分:5)
在创建场景和测试用例之后,这是非常常见的,我们需要使用JMeter运行,我们必须修复允许在JMeter线程组中使用多少用户或线程的值。我们不想限制我们的Load发生器或我们的JMeter实例。所以基本上,在两种情况下都需要调整。否则,测试的输出将毫无价值,我们将失去我们的时间。所以我们需要考虑以下事项: -
HEAP=-Xms512m –Xmx512m
这意味着默认分配的堆大小最小为512MB,最大为512MB。根据您自己的PC配置进行配置。请记住,操作系统还需要一些内存,因此不要为所有物理内存分配。
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%,则认为这些测试不如报告那么可靠。
为了更好,更详细地理解这两个博客How many users JMeter can support?和9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure必须提供帮助。
答案 4 :(得分:1)
Jmeter
中的线程执行没有没有限制。由于它是基于Java的工具,因此它使用Java线程功能。在并发执行线程的情况下,我们需要注意机器配置(即内存大小和CPU)。
为避免出现OutOfMemory
问题,请尝试在jmeter
内的NON-GUI
脚本中以自定义Java运行时参数在jmeter
模式下运行apache-jmeter/bin/jmeter
。
默认值为512 MB。
答案 5 :(得分:0)
如果您的机器可以处理它,我认为JMeter本身没有任何线程限制。测试的基本思想应该是,线程切换和等待时间不应过多影响实际性能指标。
两种情况之间存在巨大差异。在第一种情况下,最糟糕的情况是,您将拥有500个并发用户。在第二种情况下,最大并发用户数为50.方案1的平均时间将大于方案2的平均时间。