k6: как управлять rps-лимитом на каждом этапе увеличения количества VU - PullRequest
1 голос
/ 10 ноября 2019

У меня есть вопрос об основном термине, для которого я не нашел подробного объяснения. Входные данные: framework k6 v0.25.1, http-запросы.

Вопрос № 1 : какова реализация VU (виртуального пользователя) с точки зрения:

1) на стороне клиента;

2) на стороне сервера;

3) взаимодействия клиент-сервер?

Что следует прочесть о тонкостях сущности VU, в частностив пределах к6? На данный момент я выяснил, что каждый VU занимает один сетевой порт на стороне клиента и сервера.

Профили загрузки:

1) rps: 1;VUS: 1;длительность N минут - в Grafana я вижу, что увеличение количества запросов действительно минимально: + ~ 1rps. Все хорошо;

2) rps: 1;vus: 1..1000 с ускорением в течение N минут по опции target в stages - я вижу, что нагрузка увеличилась на ~ + 100rps в пике, хотя опция "rps" согласно k6 документации это опция «Максимальное количество запросов в секунду, суммарно для всех VU», т.е. вместо ~ + 100 об / с, я ожидал увидеть нагрузку в ~ 1 об / с, по аналогии с опытом # 1 - т.е. либо ошибка k6, что rps ограничивает неправильноне принимает количество запросов в секунду во всех потоках VU или скрытое юридическое поведение для VU, необходимых для существования каждого VU.

Примечание. Я устанавливаю произвольное время ожидания в начале и конце сценария для достижения равномерного распределения нагрузки.

Вопрос № 2 : Что может быть причиной невероятного увеличения числа оборотов в секунду с незаконно превышенным пределом количества оборотов в минуту при увеличении vus?

Пример:

import http from "k6/http";

export let options = {
    stages: [
        { duration: "1m", target: 1, rps: 1 },
        { duration: "1m", target: 200, rps: 1 },
        { duration: "1m", target: 500, rps: 1 },
        { duration: "1m", target: 1000, rps: 1 },
        { duration: "1m", target: 500, rps: 1 },
        { duration: "1m", target: 200, rps: 1 },
        { duration: "1m", target: 1, rps: 1 },
    ]
};

export default function() {
  http.get("https://httpbin.test.loadimpact.com/get"); 
  console.log("request made by VU " + __VU); 
};

grafana enter image description here

1 Ответ

1 голос
/ 11 ноября 2019

Virtual User или VU - это k6 конкретное определение и реализация. VU - это объект, который выполняет ваш сценарий, отправляет один или несколько HTTP-запросов на ваш сервер.

Если вы тестируете веб-сервер, вы можете подумать, что VU совпадает с реальным пользователем.

Если вы тестируете API, VU может выдавать на сервер больше запросов в секунду (RPS), чем ваш настоящий VUs. Например, вы можете определить 5 VU, но каждый может выдавать 10 запросов в секунду. Вот почему, когда ваши VU увеличиваются, вы можете очень быстро достичь предела RPS.

Подробнее об определении VU можно прочитать по этой ссылке .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...