我正在使用Jmeter加载测试我的应用程序。我的应用程序支持多种请求类型,每种请求类型都有一个速率。我想以预定义的速率(qps)加载测试应用程序。这就是我编写测试计划的方式:
我有1个线程组/请求类型 每个线程组都定义了HTTP请求和常量吞吐量计时器。计时器用(x /秒)定义我想要服务器的速率。
鉴于这种情况,线程/用户的数量有多大?
使用10个线程/用户和定义100个请求/秒的速率与100个线程/用户以及定义100个请求/秒的速率之间有什么区别?它只是线程重用?什么是最佳做法?
答案 0 :(得分:0)
简短回答:
关于并发性,它取决于您正在测试的应用程序。示例:如果AUT是无状态REST调用,并且您关心的是每秒x次事务(tps),则只要您实现目标命中,用户数(jmeter术语中的线程)就不重要了。但如果它是一个Web应用程序,需要用户维护会话并具有适当的上下文用户旅程,那么并发数量的用户/线程非常重要,因为我们可以用很少或更多的用户来实现目标,设计非常重要根据NFR的工作量。
Here is an article详细阐述了这一概念。我希望我有道理。
答案 1 :(得分:0)
您需要计算need
的用户数量计算负载测试中使用的并发用户数的公式:
concurrent_users =(peak_hourly_visits * average_session_duration)/ 3600
基本上,这取决于您期望的用户数量,当您执行压力测试时,您将尝试使这个数量的用户超载。
答案 2 :(得分:0)
默认情况下,每个JMeter线程都会尽可能快地执行采样器。
恒定吞吐量计时器用于暂停线程减慢总体执行速度以达到目标吞吐量。
如果您有10个虚拟用户,可以每秒10个请求的速率执行,那么在不增加用户数的情况下,您将无法达到每秒20个请求。但是,您可以将它们降低到每秒5个请求或每秒2个请求。
如果您需要以定义的吞吐量运行请求并且不确定需要多少线程,那么基本上有两个选项:
考虑以下JMeter Plugins
的组合这些元素可以使用Feedback Function加入,所以如果你定义" Target Concurrency"作为${__tstFeedback(jp@gc - Throughput Shaping Timer,100,1000,50)}
,JMeter最初将使用100个线程,但如果当前虚拟用户数足以维持您在吞吐量整形计时器中定义的吞吐量,则能够自动添加最多1000个线程。