Problems · Performance Testing 101

Common Performance Problems

The 7 most frequent performance issues encountered during testing and in production — what they mean, why they happen, and how they manifest.

  7 Problems Every Tester Must Know
01

Reduced Throughput

📉
The system is processing fewer requests/transactions per second than expected. Users experience delays as the system cannot handle incoming traffic fast enough.
Why It Happens
Slow Backend Calls Database Slowness Insufficient CPU Poorly Written Code Network Bottlenecks
Example
EXPECTED 100 req/sec ACTUAL 40 req/sec
02

Poor Response Time

🐌
Each request takes too long to return a response. The delay is felt directly by end users as sluggish interactions.
Why It Happens
Heavy Server Processing Slow DB Queries High Network Latency Thread Pool Saturation
Example
SLA Login API: 200 ms ACTUAL 2,000 ms
10× slower than expected — users abandon the page.
03

Lack of Scalability

📊
Performance does not increase when more resources (CPU / RAM / instances) are added. Throwing hardware at the problem doesn't fix it.
Why It Happens
Architecture Limitations Single-Threaded Processes DB Bottlenecks Global Locks
Example
ACTION Servers: 2 → 4 instances
RESULT Throughput barely increases
04

Server Can't Handle X Users

💥
The application crashes, hangs, or becomes slow when user count crosses a certain limit.
Why It Happens
CPU Spikes to 100% Memory Exhaustion Thread Pool Full DB Pool Maxed Out
Example
STABLE Up to 500 users
FAILS At 600+ users — unstable
05

Heap Problem

🧠
Java heap memory is not managed well → leads to OutOfMemoryError, long GC pauses, or memory leaks. Memory keeps increasing and never comes down.
Symptoms
Memory Never Reclaimed Frequent Full GC GC Pause Times ↑ OutOfMemoryError
Example
UNDER LOAD Heap usage → 100%
Very slow responses → eventual application crash.
06

Thread Pool Issue

🧵
All available threads are occupied → new requests wait in queue or get rejected. The server is alive but unable to process more work.
Why It Happens
Slow Backend Calls Blocking I/O Small Thread Pool Size
Example
POOL 50 threads INCOMING 200 requests
150 requests wait → high response time → 503 Service Unavailable errors.
07

Long Running DB Queries

🗄️
Queries take too much time due to poor SQL design or missing indexes. This bottleneck cascades and slows down the entire application.
Why It Happens
Missing Indexes Large Data Scans Complex Joins Query Locks High DB CPU
Example
NORMAL "Get User Orders": 50 ms
UNDER LOAD 3,000 ms (table scan + lock contention)
60× slower → entire application bottlenecked.

Quick Reference Summary

ProblemMeaningExample
Reduced ThroughputSystem handles fewer req/secExpected 100 TPS → actual 40 TPS
Poor Response TimeRequests take longer to completeLogin: 2 sec instead of 200 ms
Lack of ScalabilityMore resources ≠ better performance+= servers but same TPS
Server User LimitCrashes/slow at certain user countStable till 500, fails at 600
Heap ProblemMemory leak / GC issuesHeap 100%, app slows or crashes
Thread Pool IssueNo free threads → requests waitPool: 50; Incoming: 200 requests
Long DB QueriesSlow SQL → delays entire appQuery: 3 sec instead of 50 ms