了解简单 Laravel 应用程序上的 JMeter 结果

Understanding JMeter results on simple Laravel application

我正在努力理解 Jmeter 的负载测试结果。

我想了解普通 Laravel 应用程序可以处理多少负载。我在普通 Laravel 8 上设置了简单的端点并尝试了不同的 AWS EC2 实例(t3.medium、t3.xlarge、负载平衡设置等)。

我们使用了以下路由来强制增加响应时间:

Route::get('/r0', function (Request $request) {
    $data = [
        'name' => 'test_name',
        'image' => 'imageURL',
        'translations' => [
            'en' => 'test_english',
            'te' => 'పంచాయతి సెక్రటరి',
        ],
    ];

    return
        response()->json($data, 200, ['Content-Type' => 'application/json;charset=UTF-8', 'Charset' => 'utf-8'], JSON_UNESCAPED_UNICODE);
});

Route::get('/r1', function (Request $request) {
    sleep(2);
    $data = [
        'name' => 'test_name',
        'image' => 'imageURL',
        'translations' => [
            'en' => 'test_english',
            'te' => 'పంచాయతి సెక్రటరి',
        ],
    ];

    return
        response()->json($data, 200, ['Content-Type' => 'application/json;charset=UTF-8', 'Charset' => 'utf-8'], JSON_UNESCAPED_UNICODE);
});

Route::get('/r2', function (Request $request) {
    sleep(10);
    $data = [
        'name' => 'test_name',
        'image' => 'imageURL',
        'translations' => [
            'en' => 'test_english',
            'te' => 'పంచాయతి సెక్రటరి',
        ],
    ];

    return
        response()->json($data, 200, ['Content-Type' => 'application/json;charset=UTF-8', 'Charset' => 'utf-8'], JSON_UNESCAPED_UNICODE);
});

我记录了从“图表结果”中获得的吞吐量偏差以及从“综合报告”中获得的其他详细信息在 Jmeter 上用于不同的端点。

这是其中一个设置中 r1 的示例结果:

根据以上image/table,以下是我想要回答的一些问题:

  1. 服务器可以为这个端点处理多少负载?是偏差高于吞吐量的点(如互联网上的一些博客文章所述)还是误差百分比不为零?

  2. 如何定义服务器可以处理的最大负载或容量?它可以是任何时候像 200 个用户这样的绝对数字吗?

  3. 对于某些端点,服务器在一定负载后完全停止响应。在进行进一步测试之前,我必须重新启动服务器。为什么会这样?

您的 table 没有说明有多少线程处于活动状态以及线程数、吞吐量、响应时间、错误等之间的关系是什么的完整故事。我宁愿建议生成 HTML Reporting Dashboard,它比汇总数字

提供更多信息
  1. 通常我会寻找 saturation point - 最大系统性能点,例如:

    • 从 1 个虚拟用户开始
    • 逐渐增加负载观察即Transactions per Second chart。在运行良好的系统上,吞吐量(每秒事务数)的增长幅度应与虚拟用户数的增长幅度相同,即您将负载增加两倍——吞吐量应该高出两倍。响应时间应该大致相等
    • 在某些时候,您会发现吞吐量下降而响应时间增加。如果您在这一刻之前查看 Active Threads Over Time 图表 - 您会看到在此阶段有多少虚拟用户在线 - 这就是您正在寻找的数字
    • 您可以继续增加负载以查看错误何时开始出现或应用程序何时终止
  2. 我认为第一点提供了答案

  3. 可能的原因有很多,最common/obvious是: