Разбивать статистику на уровне API или уровне потока в K6? - PullRequest
0 голосов
/ 17 ноября 2018

Я быстро взглянул на K6 с точки зрения нагрузки.

Графики, которые я получил до сих пор, показывают TPS, время отклика, частоту ошибок на глобальном уровне, и это не слишком полезно.

Когда я загружаю тест, я скорее получаю эту статистику на глобальном уровне, но также на уровне потока или на уровне APi. Таким образом, если, например, если я вижу высокую задержку, я могу сразу сказать, вызвано ли это одним API или все API работают медленно.

Или я могу сказать, что данный API дает, скажем, HTTP / 500 или несколько различных API.

Может ли K6 отображать статистику, такую ​​как TPS, время отклика, состояние HTTP на уровне API, уровень потока и глобальный уровень?

Спасибо

1 Ответ

0 голосов
/ 11 декабря 2018

Да, это возможно, и у вас есть 3 варианта с точки зрения представления результатов (все они связаны с использованием пользовательских метрик в некоторой степени):

  1. Конец результатов теста выводится на стандартный вывод.
  2. Вы выводите данные результата в InfluxDB + Grafana .
  3. Вы выводите данные результата в Load Impact Insights .

Глобальные статистические данные, которые вы получаете по всем трем выше, и по статистике конечной точки API вы получаете из коробки 2) и 3), но для получения статистических данных на уровне потока вам нужно создать пользовательских метрик , которыеработает со всеми тремя вариантами выше.Итак, что-то вроде этого:

import http from "k6/http";
import { Trend, Rate } from "k6/metrics";
import { group, sleep } from "k6";

export let options = {
    stages: [
        { target: 10, duration: "30s" }
    ]
};

var flow1RespTime = new Trend("flow_1_resp_time");
var flow1TPS = new Rate("flow_1_tps");
var flow1FailureRate = new Rate("flow_1_failure_rate");

export default function() {
    group("Flow 1", function() {
        let res = http.get("https://test.loadimpact.com/");
        flow1RespTime.add(res.timings.duration);
        flow1TPS.add(1);
        flow1FailureRate.add(res.status == 0 || res.status > 399);
    });
    sleep(3);
};

Это расширило бы итоговую статистику конца теста, напечатанную на стандартный вывод, чтобы включить пользовательские метрики:

enter image description here

...