2010-08-20 129 views
28
  1. 请您告诉我最大限制为no。线程,我可以使用JMeter 2.4进行负载测试?JMeter max。线程限制

  2. 在采用单个循环中的所有线程还是采用更少的否,有任何区别。的线程和初始化循环来实现相同的编号。用户/线程?

实施例:

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

无论是相同

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

或是否有在结果方面的任何差异?

+4

好问题应该选择一个答案! – tgkprog 2013-10-03 16:48:33

回答

20
  1. 线程的最大数量是由很多因素决定的,看到这个答案https://stackoverflow.com/a/11922239/460802

  2. 有一个在你提出什么大的差别。

    • “500个线程,循环1”意味着500个线程在同一时间循环一次。
    • “50个线程,循环10”意味着只有50个线程在同一时间循环十次。

理论上你会得到相同数量的结果(500),但你打在一个非常不同的方式服务器。

9

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

5

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

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

希望我能够提供帮助。

2:这正是BlackGaff解释的: “500个线程,循环1”意味着500个线程在同一时间循环一次。 “50个线程,循环10”意味着在同一时间只有50个线程循环十次。

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

  2. 这两种情况有很大的区别。在第一种情况下,最糟糕的情况是,您将有500个并发用户。在第二种情况下,并发用户的最大数量将是50.场景1的平均时间会比平均时间的情况大2

5

这是坚持在这里很常见的创建方案后,和测试用例,我们需要使用JMeter运行,并且我们必须修复JMeter Thread Group中允许使用多少用户或线程的值。我们不想限制我们的负载生成器或我们的JMeter实例。所以基本上,在这两种情况下都需要调整。否则,测试的输出将毫无价值,我们将失去数小时的时间。因此,这里有我们需要考虑的事情: -

  • JMeter的是否与JVM运行的Java工具。为了获得最大的能力,我们需要execution.First过程中提供最大的资源JMeter的,我们需要增加堆大小(内部JMeter的bin目录中,我们得到jmeter.bat/SH)
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 consumptionCPU usages运行低于80%与否。如果这些用法超过80%,则认为这些测试作为报告不可靠。

为了更好,更详细地了解这两个博客How many users JMeter can support?9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure必须帮助。

+0

@Adnan的答案是最好的答案),但作为参考,我在AWS的m4.2xlarge上运行了1000个并发线程,而没有出现任何问题。 – 2017-08-21 19:22:35