0

我正在使用 Jmeter 对我的应用程序进行负载测试。我的应用程序支持多种请求类型,每种请求类型都有一个速率。我想以预定义的速率 (qps) 对应用程序进行负载测试。这就是我编写测试计划的方式:

我有 1 个线程组/请求类型 每个线程组都定义了一个 HTTP 请求和一个恒定吞吐量计时器。计时器定义了我想用(x/秒)访问我的服务器的速率。

在这种情况下,线程/用户的数量有多大?

使用 10 个线程/用户和定义 100 个请求/秒的速率与 100 个线程/用户和定义 100 个请求/秒的速率有什么区别?它只是线程重用吗?最佳做法是什么?

4

3 回答 3

0

默认情况下,每个 JMeter 线程都尽可能快地执行采样器。

恒定吞吐量计时器用于暂停线程以降低整体执行速度以达到目标吞吐量。

如果您有 10 个可以以每秒 10 个请求的速率执行的虚拟用户,那么如果不增加用户数量,您将无法达到每秒 20 个请求。但是,您可以将它们减慢到每秒 5 个请求或每秒 2 个请求。

如果您需要以定义的吞吐量运行请求并且不确定需要多少线程,则基本上有 2 个选项:

  1. 确保在Thread Group中提供足够的线程。即在没有任何计时器的情况下运行您的测试,看看吞吐量如何使用即聚合报告侦听器。如果它高于需要 - 你很高兴。如果不是 - 添加线程,除非它至少等于或高于您的需要。
  2. 考虑以下JMeter 插件的组合

    这些元素可以使用反馈函数连接,因此如果您将“目标并发”定义为${__tstFeedback(jp@gc - Throughput Shaping Timer,100,1000,50)},JMeter 最初将使用 100 个线程,但如果当前虚拟用户数量足以维持您在吞吐量整形计时器。

您可以使用JMeter 插件管理器安装这两个插件

于 2018-06-14T04:45:35.047 回答
0

简而言之:

它与并发有关,它取决于您正在测试的应用程序。示例:如果 AUT 是无状态的 REST 调用,并且您只关心每秒 x 个事务 (tps),​​那么只要您实现目标命中,用户数(jmeter 术语中的线程)就无关紧要。但是,如果它是一个需要用户维护会话并具有适当的上下文用户旅程的 Web 应用程序,那么并发用户/线程的数量就非常重要,因为我们可以在很少或更多用户的情况下实现目标,设计非常重要根据 NFR 的工作量。

这是一篇详细阐述这个概念的文章。我希望我是有道理的。

于 2018-06-14T02:08:06.153 回答
0

你需要计算你需要的用户数量

计算负载测试中使用的并发用户数的公式:

concurrent_users = (peak_hourly_visits * average_session_duration) / 3600

基本上它取决于您期望的用户数量,当您执行压力测试时,您将尝试超载这个数量的用户。

于 2018-06-14T03:28:09.470 回答