你能告诉我最大的限制吗?我可以在 JMeter 2.4 中使用哪些线程来进行负载测试?
在一个循环中使用所有线程或通过更少的没有有什么区别。线程并初始化循环以实现相同的编号。用户/线程?
例子:
No. of threads=500
Ramp up=1000
Loop=1
是否相同
No. of threads=50
Ramp up=100
Loop=10
还是在结果方面有什么不同?
你能告诉我最大的限制吗?我可以在 JMeter 2.4 中使用哪些线程来进行负载测试?
在一个循环中使用所有线程或通过更少的没有有什么区别。线程并初始化循环以实现相同的编号。用户/线程?
例子:
No. of threads=500
Ramp up=1000
Loop=1
是否相同
No. of threads=50
Ramp up=100
Loop=10
还是在结果方面有什么不同?
最大线程数由很多因素决定,请参阅此答案https://stackoverflow.com/a/11922239/460802
你的提议有很大的不同。
从理论上讲,您会得到相同数量的结果(500),但是您以非常不同的方式访问服务器。
最大用户数取决于您的操作系统、可用 RAM 和连接。Win XP 同时限制为 3000 个进程。在Linux上超过3000,但我不知道多少。小心你测试服务器,如果你在你的机器上启动 3000 个线程需要大量资源并且测试不会是真实的。我希望每台机器最多启动 300 个用户。如果您想增加用户数量而不是使用分布式测试(使用更多机器作为 DoS 攻击)。理论上是请求数相同但时间复杂度不一样。
这在创建场景和测试用例后很常见,我们需要使用 JMeter 运行,并且我们必须修复在 JMeter 线程组中允许使用多少用户或线程的值。我们不想限制我们的负载生成器或我们的 JMeter 实例。所以基本上,这两种情况都需要调整。否则,测试的输出将毫无价值,我们将浪费数小时的时间。所以这里是我们需要考虑的事情:-
HEAP=-Xms512m –Xmx512m
这意味着默认分配的堆大小最小为 512MB,最大为 512MB。根据您自己的 PC 配置进行配置。请记住,操作系统也需要一些内存,所以不要分配所有的物理 RAM。
NEW=-XX:NewSize=128m -XX:MaxNewSize=512m
这意味着内存将以这个速度增加。您应该小心,因为如果您的负载生成一开始非常高,则可能需要增加。请记住,如果范围太宽,它会在 JVM 内分割您的堆空间。如果是这样,垃圾收集器需要更加努力地清理。
JMeter 是 Java GUI 应用程序。它还具有资源密集型 (CPU/RAM) 较少的非 GUI 版本。如果我们在非 GUI 模式下运行 JMeter ,它将消耗更少的资源,我们可以运行更多的线程。
禁用所有侦听器:在测试运行期间。它们仅用于调试并使用它们来设计您想要的脚本。
在负载测试期间应禁用侦听器。启用它们会导致额外的开销,这会消耗测试中更重要元素所需的宝贵资源。
始终尝试使用最新的软件。保持您的 Java 和 JMeter 更新。
不要忘记,在存储请求和响应标头时,断言结果和响应数据会消耗大量内存!因此,除非绝对必要,否则尽量不要将这些值存储在 JMeter 上。
所以总而言之,如果 JMeter 脚本中没有包含 Listeners,运行 JMeter 服务器内部没有监控,网络开销/障碍和 JMeter 脚本得到优化,那么这里是一个粗略的计算:
The total number of concurrent user = (total allocable memory)/(Size of all requests)
您必须仅根据负载情况来估计并发数用户/线程(活动线程) 。
此外,您需要监控您的服务器Memory consumption
是否CPU usages
运行在 80% 以下。如果这些使用超过 80%,则认为这些测试与报告一样不可靠。
为了更好更详细地理解这两个博客JMeter 可以支持多少用户?和JMeter 负载测试“内存不足”失败的 9 个简单解决方案必须有所帮助。
1:当然这很大程度上取决于运行JMeter的机器,但如果里程数我可以给你一些提示。JMeter 允许您在同一个盒子中运行多个进程,并且通常非常可靠地为每个 JMeter 实例生成多达 200 个线程。如果您需要更多,我建议使用多个 JMeter 实例。一台经过一些调整的现代机器可以轻松生成 500 到 1000 个线程。使用 Linux,您可能需要增加文件描述符的最大数量(请参见此处)。
它有助于在没有 GUI 的情况下运行 JMeter,将报告/图形数据写入文件中以便稍后呈现。您还必须注意您的网络限制。Gbps 网络中的服务器很容易生成数千个请求,但共享 54 Mbps 路由器的笔记本电脑会受到更多限制。尝试将您与服务器的实际连接除以请求的大小,然后您就会知道带宽是否会限制您。请特别注意 JMeter 的配置,以下载或不下载 HTML 响应中引用的文件。
希望我能提供帮助。
2:这正是 BlackGaff 解释的:“500 个线程,Loop 1”意味着 500 个线程同时执行一次循环。“50 个线程,循环 10”表示只有 50 个线程同时执行 10 次循环。
中的线程执行没有限制Jmeter
。由于它是一个基于 java 的工具,它使用 java 线程功能。在并发线程执行的情况下,我们需要注意机器配置(即内存大小和 CPU)。
为避免OutOfMemory
出现问题,请尝试在内部脚本中使用自定义 java 运行时参数的模式jmeter
运行。默认为 512 MB。NON-GUI
jmeter
apache-jmeter/bin/jmeter
如果您的机器可以处理它,我认为 JMeter 本身没有任何线程限制。测试的基本思路应该是,线程的切换和等待时间不应该对实际的性能指标有太大的影响。
这两种情况有很大的不同。在第一种情况下,最坏的情况下,您将有 500 个并发用户。在第二种情况下,最大并发用户数将为 50。场景 1 的平均时间将大于场景 2 的平均时间。