Files
NowChessSystems/load-tests/README.md
T
2026-05-06 08:41:49 +02:00

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