2.1 KiB
2.1 KiB
NowChess Load Testing with k6
Performance testing suite for NowChess services using k6.
Installation
# 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.
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.
k6 run stress-test.js
Target: Determine system capacity and failure point.
3. Spike Test
Sudden traffic surge (baseline 50 → 500 users instantly).
k6 run spike-test.js
Target: Test recovery and resilience to sudden spikes.
4. Constant Load Test
Maintains 50 VUs for 10 minutes.
k6 run constant-load.js
Target: Check stability under sustained load.
Environment Variables
# 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:
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:
quarkus:
redis:
pool:
max-size: 128 # Increase if still hitting limits
max-waiting: 256