Перейти к содержанию

k6 тестирование сайта

!!! warning Таким образом можно протестировать лишь создавая трафик с одного сервера, как правило сгенерировать больше 3000 запросов в секунду с одного хоста не удается, если необходимо тестировать сайт с большим количеством RPS то нужно рассмостреть вариант установке k6 в kubernetes кластере и выполнять оттуда ( из расчета что кадая нода может генерировать максимум 3000 RPS , чаще даже меньше )

Устанавливаем:

на примене debian:

Text Only
1
2
3
4
5
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