Нагрузочное тестирование с k6

5
(1)

Есть разные способы подать нагрузку на сайт, например wrk. Сегодня рассмотрим еще один инструмент, который позволяет описывать в виде js кода то, как именно мы будем подавать нагрузку.

Установка:

Bash
sudo gpg -k
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
echo "deb [signed-by=/usr/share/keyrings/k6-archive-keyring.gpg] https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update
sudo apt-get install k6

Собственно скрипт:

JavaScript
import http, { head } from 'k6/http';
import { check, sleep } from 'k6';

const BASE_URL = "https://andtree.ru"

const headers = {
    'test': 'test',
    'test2': 'test'
}

export let options = {
    vus: 10,
    duration: '1m',
    thresholds: {
        'http_reqs': ['rate>=1000'],
    },
};

function checkResponseStatus(response, expectedStatus) {
    check(response, {
        [`is status ${expectedStatus}`]: (r) => r.status === expectedStatus,
    });
}

function one() {
    let url = `${BASE_URL}`
    let response = http.get(url, { headers: headers});
    checkResponseStatus(response, 200);
    sleep(1);
}

function two() {
    let url = `${BASE_URL}/wp-content/uploads/2024/01/ec0e5ffc-d823-4ee3-89ca-f655b3a6e8b4-300x200.webp`
    let response = http.get(url, { headers: headers});
    checkResponseStatus(response, 200);
    sleep(1);
}


export default function () {
	one();
	two();
}

Это просто пример в котором 10 пользователей (vus) будут отправлять HTTP запрос на указанные endpoints в функциях one и two и тест будет считаться успешным, если кол-во отправленных запросов http_reqs будет больше или равно 1000 запросам в секунду.

Хедеры представлены для примера.

Запускаем:

Bash
k6 run load.js

Конечно в данном случае тест не пройден, ибо 10 пользователей не дадут 1к RPS, но это просто пример того, как может выглядеть скрипт на js для запуска в k6.

Насколько статья полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.

Оставить комментарий