Debugging Guide
How To Debug Performance Regressions
When a deploy feels slower, use a small controlled test to confirm the regression, find the weakest metric, and rerun after each fix.
Start a safe testConfirm The Regression First
Start by running the same test settings that produced the baseline: same URL, method, headers, request body, concurrency, request rate, duration, and timeout. A changed test scenario can make a healthy deploy look worse or hide a real problem.
Debug In The Right Order
- Check errors first. More 4xx, 429, or 500 responses usually matter before latency tuning.
- Check timeout count. Timeouts often point to queueing, slow dependencies, or overloaded workers.
- Compare p95 and p99. These metrics show whether the slower side of user experience changed.
- Review status codes. A new status-code pattern can identify auth, routing, rate-limit, or server issues.
- Inspect server evidence. Use logs, traces, database metrics, cache metrics, and upstream provider dashboards.
- Change one thing. Rerun the same load test after each fix so the improvement is measurable.
Common Regression Sources
- Missing database indexes or larger result sets.
- External API calls added to the request path.
- Cold starts or lower serverless concurrency.
- Cache misses after a deploy or configuration change.
- Connection pool limits between the app, database, cache, or queue.
- Large payloads, slow serialization, or unnecessary response fields.
Regression Debugging Checklist
- Save the before report.
- Save the after report.
- Compare p95, p99, errors, timeouts, status codes, and RPS.
- Connect the report to logs and infrastructure metrics.
- Fix the most likely bottleneck and rerun the same scenario.
Pair this with the performance regression testing guide and report reading guide.