【问题标题】:Why Nginx 0 second latency and 1 second latency have much different ? And how to calculate it? [closed]为什么 Nginx 0 秒延迟和 1 秒延迟有很大不同?以及如何计算?
【发布时间】:2019-01-13 00:27:43
【问题描述】:

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

负载测试 jmeter 详细信息: 用户:250 加速(秒):125 时长:36000(10 小时)

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

结果 249.4/秒每秒

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

  1. 为什么当后端延迟为 1 秒时 tps 会大幅下降? (我使用了 nginx 的默认配置)
  2. 如何计算上述 jmeter 脚本的 n 秒延迟的预期 tps(用户数、加速、持续时间、后端延迟)?

【问题讨论】:

    标签: nginx testing jmeter performance-testing qa


    【解决方案1】:

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

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

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

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

    一般来说你应该采取以下方法:

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

    【讨论】:

    • 从后端添加延迟,我知道每个请求都会影响延迟。
    • 但我的问题是为什么它会像 276939.2/s --> 249.4/s 这样下降。如果这种下降可能......我需要知道最大 tps 可以达到什么(需要知道可以应用我的变量的公式)
    • 因为,就像上面所说的“每个虚拟用户每秒只能发出一个请求” - 我敢打赌,如果你有 300 个虚拟用户,这个数字将是 299.4 左右 :)跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    • 2012-04-25
    • 1970-01-01
    • 2022-06-27
    • 1970-01-01
    相关资源
    最近更新 更多