У меня есть вопрос об основном термине, для которого я не нашел подробного объяснения. Входные данные: 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);
};