在为 Drupal 应用程序加载 50 个用户的情况下运行 jmeter 测试一段时间时出错

Posted

技术标签:

【中文标题】在为 Drupal 应用程序加载 50 个用户的情况下运行 jmeter 测试一段时间时出错【英文标题】:Errors while running jmeter tests for certain duration with 50 users load for Drupal application 【发布时间】:2018-08-29 13:25:09 【问题描述】:

Jmeter 4.0 版

工作案例: 使用 jmeter 在应用程序 API 上创建性能测试。我有 50 个独立用户,启动时间为零,为 50 个用户运行脚本,执行成功,没有断言失败。

不工作的情况: 现在我通过 jmeter 调度程序运行相同的脚本持续 15 分钟,其中启动延迟为 0。在这种情况下,脚本在登录时失败,某些用户出现错误“CRPF 验证”。我还增加了启动延迟和加速时间,但没有运气。

我不确定为什么会失败,因为我正确捕获了用户令牌并传递给登录 api。它在第一种情况下工作正常,但在第二种情况下总是失败。

Drupal 控制登录。

非常感谢任何帮助,因为我无法在特定时间内运行测试。

谢谢, 拉文德拉

【问题讨论】:

【参考方案1】:

您的应用程序很可能在第二种情况下过载:

    当您在Thread Group 中只有 1 次迭代时,实际并发用户数可能少于 50,因为某些线程(虚拟用户)可能已经完成了采样器的执行,而有些甚至还没有启动.您可以使用Active Threads Over Time 侦听器或JMeter Reporting Dashboard 中的等效图表来仔细检查实际并发性。如果需要,请参阅JMeter Test Results: Why the Actual Users Number is Lower than Expected 文章以获得更详细的说明。

    当您运行测试 15 分钟时,您的所有 50 个用户同时在线,因此它可能会破坏您的应用程序。您可以通过将接下来的 2 行添加到 user.properties 文件来临时启用保存响应数据以进行调试:

    jmeter.save.saveservice.output_format=csv
    jmeter.save.saveservice.response_data=true
    

    并使用View Results Tree 侦听器检查失败采样器的响应详细信息,系统可能会在负载下不返回 CSRF 令牌。

【讨论】:

感谢 Dmitri T 深入了解该问题。最初我也想到了同样的问题,并用 100 个用户运行了第一个案例,没有遇到任何问题,我认为这可能不是问题。我已经尝试在我的工作负载配置文件中的哪个位置,我只添加了一次控制器并将登录采样器移到它下面,整个脚本工作流程在这两种情况下都运行良好。感谢您抽出宝贵时间分享您的想法,谢谢,ravindra。

以上是关于在为 Drupal 应用程序加载 50 个用户的情况下运行 jmeter 测试一段时间时出错的主要内容,如果未能解决你的问题,请参考以下文章

Drupal - 使用 AJAX 嵌入/更新视图页面

无法在 Drupal 7 中保留依赖选择框的值

将drupal commerce产品添加到购物车,无需以编程方式重新加载页面

使用 JSON 从 Drupal 视图中获取内容

为什么Drupal在页面加载时创建额外的未使用对象

使用ajax将drupal视图加载到右边距