71 lines
2.4 KiB
Markdown
71 lines
2.4 KiB
Markdown
# Load Testing (k6)
|
|
|
|
Готовый скрипт: `scripts/load/portal_k6.js`.
|
|
|
|
## 1) Установка k6
|
|
|
|
Ubuntu/Debian:
|
|
|
|
```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 update && sudo apt install -y k6
|
|
```
|
|
|
|
## 2) Smoke тест (быстрая проверка)
|
|
|
|
```bash
|
|
k6 run scripts/load/portal_k6.js \
|
|
-e BASE_URL=https://stend.4mont.ru \
|
|
-e USERNAME=ruslan \
|
|
-e PASSWORD='YOUR_PASSWORD' \
|
|
-e SERVICE_SLUGS=vmmanager,termidesk \
|
|
-e PROFILE=smoke
|
|
```
|
|
|
|
## 3) Нормальная нагрузка
|
|
|
|
```bash
|
|
k6 run scripts/load/portal_k6.js \
|
|
-e BASE_URL=https://stend.4mont.ru \
|
|
-e USERS_CSV='user1:pass1;user2:pass2;user3:pass3' \
|
|
-e SERVICE_SLUGS=vmmanager,termidesk,sayt-mont5 \
|
|
-e PROFILE=load \
|
|
-e HEARTBEATS=3 \
|
|
-e THINK_TIME=1
|
|
```
|
|
|
|
## 4) Стресс
|
|
|
|
```bash
|
|
k6 run scripts/load/portal_k6.js \
|
|
-e BASE_URL=https://stend.4mont.ru \
|
|
-e USERS_CSV='user1:pass1;user2:pass2;user3:pass3;user4:pass4' \
|
|
-e SERVICE_SLUGS=vmmanager,termidesk,sayt-mont5 \
|
|
-e PROFILE=stress
|
|
```
|
|
|
|
## 5) Ключевые параметры
|
|
|
|
- `BASE_URL` — адрес портала.
|
|
- `USERNAME`/`PASSWORD` — одиночный пользователь.
|
|
- `USERS_CSV` — набор пользователей `u1:p1;u2:p2`.
|
|
- `SERVICE_SLUGS` — список slug через запятую.
|
|
- `PROFILE` — `smoke|load|stress`.
|
|
- `HEARTBEATS` — сколько `touch` в итерации.
|
|
- `THINK_TIME` — пауза между итерациями.
|
|
- `CLOSE_SESSION=0` — не закрывать сессию в конце итерации.
|
|
|
|
## 6) Что смотреть в результате
|
|
|
|
- `http_req_duration` (`p95/p99`)
|
|
- `http_req_failed`
|
|
- `flow_errors`
|
|
- `open_success`, `open_rejected`, `limit_redirects`, `touch_rejected`
|
|
|
|
## 7) Важное
|
|
|
|
- Запускайте сначала `smoke`, потом `load`, и только затем `stress`.
|
|
- Для реалистичного теста используйте несколько пользователей, иначе упретесь в лимиты по сессиям одного пользователя.
|