Most developers assume one thing:
Async makes systems faster.
I decided to test that assumption using a real Spring Boot application.
Test Setup
- Two endpoints:
/syncand/async - Same logic: simulated IO (200ms delay)
- Load test using JMeter
- Scenarios: 50, 100, 200 users
Results Summary
| Type | Users | P95 Latency |
|---|---|---|
| Sync | 200 | ~216 ms |
| Async | 200 | ~5000 ms |
Key Observation
- Sync remained stable
- Async degraded rapidly
Throughput also showed a massive gap:
- Sync handled significantly more requests
- Async stalled under load
Root Cause
The issue was not Async itself, but configuration:
- Default thread pool too small
- Requests queued
- Latency increased exponentially
Lesson Learned
Async is not a silver bullet.
Without proper tuning:
- It can reduce performance
- Increase latency
- Lower throughput
What’s Next
In the next experiment, we will:
- Tune thread pool
- Re-run the test
- Compare results again
Conclusion
Always measure.
Because performance assumptions are often wrong.





