【问题标题】:Why I'm getting the Gatling error: "[gatling-http-1-14] WARN io.netty.channel.nio.NioEventLoop" and Gatling is killing a VU after any error为什么我收到 Gatling 错误:“[gatling-http-1-14] WARN io.netty.channel.nio.NioEventLoop”并且 Gatling 在任何错误后都会杀死 VU
【发布时间】:2021-03-10 21:42:34
【问题描述】:

我在尝试运行已完成的 Gatling 模拟时遇到了一些问题。基本上,我有两个问题:

  1. 当在 Gatling 模拟中测试的任何 API 返回 400 或任何其他错误代码(不是 check.status 的一部分)时,Gatling 会杀死虚拟用户,而不是重新启动场景并重新使用该虚拟用户,因此按照每个错误,我都会失去一个虚拟用户,因为我的测试计划只有 16 个用户进行 30 分钟,我在最初的几分钟内完成了测试,没有完成任何事情每次我尝试运行测试时都会发生这种情况并且很烦人,因为我一直在关注所有文档,但我不知道代码有什么问题。用户和斜坡的模拟配置如下所示:
    val scnCreation = scenario("My Scenario").during(conf.getDuration("test.duration")) {
        exec(Pattern.methodToExecute)
    }

    setUp(scnCreation.inject(
        rampUsers(conf.getInt("test.vu")).during(conf.getDuration("test.ramp"))
    )
  1. 我在测试运行时收到此错误,但我的资源并没有不堪重负(CPU 约为 ~30%,内存约为 ~50%):

    [gatling-http-1-13] WARN io.netty.channel.nio.NioEventLoop - Selector.select() returned prematurely 512 times in a row;

关于如何增加 Gatling 引擎的“限制”以及如何解决 Gatling 在错误后杀死一个虚拟用户的不良行为有什么想法吗?

【问题讨论】:

    标签: performance-testing gatling scala-gatling


    【解决方案1】:
    1. 除非您已使用 some exit condition 以这种方式实现测试,否则您关于错误时虚拟用户会退出循环并终止的说法很可能是错误的(编辑:您确实这样做了)。

    如果您不希望用户退出循环,请不要使用exitHereIfFailed。用exitBlockOnFail 包装你的循环内容。查看文档。

    那么,无论如何,Gatling 都不会“回收”虚拟用户。您正在使用rampUsers,它定义了一个开放的工作负载模型,您可以在其中定义用户的到达率。

    1. 这是一个 NIO/OS 错误。至少将您的 Java 升级到最新版本的 Java 8,如果您在 Linux 上运行,请检查您的内核的使用年限,并很有可能考虑升级。

    另外,我怀疑您使用的是旧版本的 Gatling,因为现代版本不在 Linux 上使用 Java NIO。您应该升级(截至目前最新的是 3.5.1)

    【讨论】:

    • 我没有使用任何东西来阻止用户在失败后完成,在某些链中,我有.exec(xyz).exitHereIfFailed这个,以便在前一个失败时停止调用下一个请求(我不想要杀死VU,因为它正在发生)。你认为这是导致这种行为的原因吗?我是否必须使用另一个用户模型来保持并发性?另一方面,我正在使用 OpenJDK 1.8.0_282 使用带有 Amazon Linux 2(来自 AWS 的 AMI)的 EC2 VM,您认为它不适用于 Gatling 吗?非常感谢您的回答和帮助。我会很感激任何解决这个问题的线索
    • 这正是 exitHereIfFailed 的预期行为:如果之前有错误,则让用户从此时退出场景。
    猜你喜欢
    • 2015-04-05
    • 1970-01-01
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    相关资源
    最近更新 更多