k6 тестирование сайта
!!! warning
Таким образом можно протестировать лишь создавая трафик с одного сервера, как правило сгенерировать больше 3000 запросов в секунду с одного хоста не удается, если необходимо тестировать сайт с большим количеством RPS то нужно рассмостреть вариант установке k6 в kubernetes кластере и выполнять оттуда ( из расчета что кадая нода может генерировать максимум 3000 RPS , чаще даже меньше )
Устанавливаем:
на примене debian:
Text Only curl -fsSL https://dl.k6.io/key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/k6.gpg
echo "deb [signed-by=/etc/apt/keyrings/k6.gpg] https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
apt update
apt install k6 -y
k6 version
создаем script.js файл для теста:
JavaScript import http from 'k6/http' ;
export const options = {
scenarios : {
high_rps : {
executor : "constant-arrival-rate" ,
rate : 50 ,
timeUnit : "1s" ,
duration : "20s" ,
preAllocatedVUs : 2500 ,
maxVUs : 9000 ,
},
},
};
export default function () {
http . get ( "https://google.com/" );
}
Запускаем тест:
Text Only ~# k6 run script.js
/\ Grafana /‾‾/
/\ / \ |\ __ / /
/ \/ \ | |/ / / ‾‾\
/ \ | ( | (‾) |
/ __________ \ |_|\_\ \_____/
execution: local
script: script.js
output: -
scenarios: (100.00%) 1 scenario, 9000 max VUs, 50s max duration (incl. graceful stop):
* high_rps: 50.00 iterations/s for 20s (maxVUs: 2500-9000, gracefulStop: 30s)
█ TOTAL RESULTS
HTTP
http_req_duration..............: avg=1.9ms min=1.35ms med=1.8ms max=5.62ms p(90)=2.27ms p(95)=2.53ms
{ expected_response:true }...: avg=1.9ms min=1.35ms med=1.8ms max=5.62ms p(90)=2.27ms p(95)=2.53ms
http_req_failed................: 0.00% 0 out of 1000
http_reqs......................: 1000 49.994049/s
EXECUTION
iteration_duration.............: avg=6.08ms min=4.89ms med=5.73ms max=59.17ms p(90)=6.79ms p(95)=7.16ms
iterations.....................: 1000 49.994049/s
vus............................: 1 min=1 max=1
vus_max........................: 2500 min=2500 max=2500
NETWORK
data_received..................: 19 MB 960 kB/s
data_sent......................: 1.9 MB 96 kB/s
running (20.0s), 0000/2500 VUs, 1000 complete and 0 interrupted iterations
high_rps ✓ [======================================] 0000/2500 VUs 20s 50.00 iters/s