TGViewer
Сочный DevOps Сочный DevOps @andtree_sec · 420 subscribers
Post #132 55
Нагрузочное тестирование с k6

Пример скрипта на js для k6:
import http, { head } from 'k6/http';
import { check, sleep } from 'k6';

const BASE_URL = ""

const headers = {
'Header': 'value',
'Header': 'value'
}

export let options = {
vus: 2, // пользователи
duration: '1m', // время выполнения
thresholds: {
'http_reqs': ['rate>=1000'], // RPS
},
};

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

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

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

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


Тут нужно добавить BASE_URL и headers, если они нужны. Само собой поправить endpoints. Пример базовый, но подойдет для большинства тестов конкретного приложения.

vus - количество пользователей.
duration - продолжительность выполнения.
thresholds - в данном случае количество RPS при достижении которого тест считается успешным.

Установить k6s на ubuntu 22.04 можно так:
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


Запуск:
k6 run load.js


#k6
More from @andtree_sec
  1. Sep 7, 2026Давненько не было сообщений. Скорее всего в будущем они уйдут в telegraf, который я еще не…
  2. Jul 6, 2026Последнее время на работе часто приходится работать с apache flink и даже что-то писать на…
  3. Jun 4, 2026Немножко про молекула тесты... У нас принято использовать в переменных lookup плагин для д…
  4. May 20, 2026Очередной небольшой проект. Веб-приложение, которое агрегирует через стандартный механиз g…
  5. May 15, 2026Включаем профилирование в ansible Профилирование, это вывод даты, времени запуска и итогов…
  6. Apr 17, 2026Так выглядит общий dashbord работы с инцидентами.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →