101 lines
2.1 KiB
Markdown
101 lines
2.1 KiB
Markdown
# NowChess Load Testing with k6
|
|
|
|
Performance testing suite for NowChess services using k6.
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
# Install k6 (macOS)
|
|
brew install k6
|
|
|
|
# Or download from https://k6.io/docs/getting-started/installation/
|
|
```
|
|
|
|
## Test Scenarios
|
|
|
|
### 1. Ramp-Up Test
|
|
Gradually increases load from 10 to 100 concurrent users.
|
|
|
|
```bash
|
|
k6 run ramp-up.js
|
|
```
|
|
|
|
Target: Identify system behavior under gradual load increase.
|
|
|
|
### 2. Stress Test
|
|
Incremental load increase up to 500 concurrent users to find breaking point.
|
|
|
|
```bash
|
|
k6 run stress-test.js
|
|
```
|
|
|
|
Target: Determine system capacity and failure point.
|
|
|
|
### 3. Spike Test
|
|
Sudden traffic surge (baseline 50 → 500 users instantly).
|
|
|
|
```bash
|
|
k6 run spike-test.js
|
|
```
|
|
|
|
Target: Test recovery and resilience to sudden spikes.
|
|
|
|
### 4. Constant Load Test
|
|
Maintains 50 VUs for 10 minutes.
|
|
|
|
```bash
|
|
k6 run constant-load.js
|
|
```
|
|
|
|
Target: Check stability under sustained load.
|
|
|
|
## Environment Variables
|
|
|
|
```bash
|
|
# Override service endpoints
|
|
export BASE_URL=http://localhost:8080
|
|
export ACCOUNT_HOST=http://localhost:8083
|
|
export STORE_HOST=http://localhost:8085
|
|
|
|
k6 run ramp-up.js
|
|
```
|
|
|
|
## Prerequisites
|
|
|
|
Ensure services are running:
|
|
- Core: `localhost:8080`
|
|
- Account: `localhost:8083`
|
|
- Store: `localhost:8085`
|
|
- Redis: `localhost:6379` (with increased pool size)
|
|
|
|
## Metrics Interpretation
|
|
|
|
- `http_req_duration`: Response time (p95, p99 percentiles matter most)
|
|
- `http_req_failed`: Failed requests (connection errors, errors, non-2xx responses)
|
|
- `vus`: Virtual Users (concurrent connections)
|
|
- `iterations`: Completed test cycles per VU
|
|
|
|
## Results
|
|
|
|
k6 generates HTML report output. Use with:
|
|
|
|
```bash
|
|
k6 run --out=csv=results.csv ramp-up.js
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
If you see:
|
|
- **"max pool wait timeout"** → Redis pool still too small or maxWaitTime too short
|
|
- **"connection refused"** → Service not running
|
|
- **"high p99 latency"** → System approaching capacity
|
|
|
|
Increase Redis pool settings in `modules/*/src/main/resources/application.yml`:
|
|
```yaml
|
|
quarkus:
|
|
redis:
|
|
pool:
|
|
max-size: 128 # Increase if still hitting limits
|
|
max-waiting: 256
|
|
```
|