Executes load, stress, spike, and soak tests with k6, Artillery, JMeter, Locust, and autocannon to find bottlenecks and check SLAs.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin performance-test-suiteThis skill is limited to using the following tools:
Execute load testing, stress testing, and performance benchmarking to identify bottlenecks, establish baseline metrics, and verify SLA compliance. Supports k6 (recommended), Artillery, Apache JMeter, Locust (Python), and autocannon (Node.js).
Creates and runs load tests with k6, JMeter, and Artillery for web apps and APIs. Validates performance under stress, spike, soak, scalability to detect bottlenecks.
Conducts load and performance testing using k6, Artillery, Locust, JMeter. Supports stress, spike, soak tests with baselines, thresholds, and statistical checks. Activates on load/stress test mentions.
Generates k6, Artillery, wrk scripts for API load/stress/soak tests to validate performance, identify bottlenecks, and establish baselines under configurable loads.
Share bugs, ideas, or general feedback.
Execute load testing, stress testing, and performance benchmarking to identify bottlenecks, establish baseline metrics, and verify SLA compliance. Supports k6 (recommended), Artillery, Apache JMeter, Locust (Python), and autocannon (Node.js).
k6, artillery, locust, jmeter, or autocannon).js, Artillery .yml, or Locust .py files)| Error | Cause | Solution |
|---|---|---|
| Connection reset by peer | Server or load balancer dropping connections under load | Check max connections settings; increase connection pool size; verify keep-alive configuration |
| Timeouts spike at certain VU count | Application thread pool or database connection pool exhausted | Profile connection usage; increase pool size; add connection queuing; optimize slow queries |
| Inconsistent results between runs | Cache warming, garbage collection pauses, or noisy neighbor effects | Run a warm-up phase before measurement; use dedicated test infrastructure; average across 3 runs |
| Load generator CPU maxed out | Single machine cannot generate sufficient load | Distribute load generation across multiple machines; use cloud-based load generation services |
| All requests return cached responses | Test data not sufficiently varied | Randomize request parameters; use unique IDs per request; disable CDN caching for test environment |
k6 load test script:
import http from 'k6/http';
import { check, sleep } from 'k6';
export const options = {
stages: [
{ duration: '2m', target: 50 }, // Ramp up
{ duration: '5m', target: 50 }, // Sustained load
{ duration: '2m', target: 200 }, // Stress # HTTP 200 OK
{ duration: '1m', target: 0 }, // Ramp down
],
thresholds: {
http_req_duration: ['p(95)<200', 'p(99)<500'], # 500: HTTP 200 OK
http_req_failed: ['rate<0.01'],
},
};
export default function () {
const res = http.get('https://api.test.com/products');
check(res, {
'status is 200': (r) => r.status === 200, # HTTP 200 OK
'response time OK': (r) => r.timings.duration < 300, # 300: timeout: 5 minutes
});
sleep(1); // Think time
}
Artillery test configuration:
config:
target: "https://api.test.com"
phases:
- duration: 120
arrivalRate: 10
name: "Warm up"
- duration: 300 # 300: timeout: 5 minutes
arrivalRate: 50
name: "Sustained load"
ensure:
p95: 200 # HTTP 200 OK
maxErrorRate: 1
scenarios:
- flow:
- get:
url: "/api/products"
- think: 1
- post:
url: "/api/cart"
json: { productId: "{{ $randomString() }}" }