为什么Nginx 0秒延迟和1秒延迟有很大不同?以及如何计算呢?

时间:2018-08-06 05:18:08

标签: nginx testing jmeter performance-testing qa

我使用jmter和ngnix模拟服务器执行了1秒的延迟负载测试。 直接为Nginx模拟服务执行负载测试。

负载测试表详细信息: 用户:250 加速(秒):125 持续时间:36000(10小时)

模拟后端详细信息: Nginx服务器用作模拟服务。 添加了1秒的延迟时间(echo_sleep 1)

结果 249.4 / s tps

但是当后端延迟为0秒时,我执行了相同的脚本。 结果 276939.2 / s tps

  1. 当后端具有1秒的延迟时,为什么tps下降太多? (我使用了Nginx的默认配置)
  2. 如何为上述jmeter脚本(用户数,上升,持续时间,后端延迟)计算n秒延迟的预期tps?

1 个答案:

答案 0 :(得分:0)

首先,我认为您使用了错误的术语,调查了JMeter Glossary

  

延迟。 JMeter测量从发送请求之前到收到第一个响应之后的延迟。因此,该时间包括组装请求以及组装响应的第一部分所需的所有处理,该过程通常长于一个字节。协议分析器(例如Wireshark)测量通过接口实际发送/接收字节的时间。 JMeter时间应该更接近浏览器或其他应用程序客户端所经历的时间。

关于您的观察解释:JMeter只是尝试尽可能快地执行请求(JMeter本身可以发送请求的速度+请求来回传输所需的时间+应用程序响应时间)

  1. 当您添加1秒人工响应时间延迟时,这意味着每个虚拟用户每秒只能发出一个请求。这就是为什么您的吞吐量大致等于虚拟用户数量的原因
  2. 当您删除这1秒的人为响应时间延迟时-JMeter开始以最快的速度执行sampler,这276939.2/s tps是250个虚拟用户可以达到的最大吞吐量。

通常,您应采用以下方法:

  1. 请确保增加负载gradually,因为只有这样,您才可以将增加的负载与响应时间的增加,吞吐量的降低等相关联。此外,您还可以识别saturation和中断点。
  2. 请确保您的负载测试准确地代表了您的应用程序的实际使用情况,否则就没有多大意义了。
  3. 确保JMeter有足够的空间来操作CPU,RAM等,就好像JMeter缺乏资源一样-它不能足够快地发送请求。您可以使用PerfMon Plugin自动检查JMeter引擎的运行状况。另外,请确保您正在关注JMeter Best Practices