Stop 10 · Performance TestingTopics · 6/8

Identifying Bottlenecks

Part of the QA Testing Roadmap

In short

The test says checkout gets slow at 800 users. Fine, but why? Finding the one slow part, the bottleneck, turns a scary graph into a fix the developers can make.

Diagnosing where a system actually slows down under load — database queries, external API calls, or application code — requires correlating performance test results with system-level monitoring.

The purple blob points at a single toll booth with a long queue of cars behind it.

Think of it like this

The single toll booth

The highway has six lanes, but only one toll booth is open. Widening the road won't help. Opening more booths will. A bottleneck is that one booth: the part that limits everything behind it.

Watch it happen

Tracing a slow checkout

Load test
API server
Database
Monitoring

800 users: /checkout

1/6Response times jump at around 800 virtual users.

The big ideas

What you need to know

Check every layer

Client, network, app server, database, third-party APIs. The slow one is rarely the one you guess.

Correlate graphs

Line up response time with CPU, memory and connections on the same timeline. Look for what peaks together.

Databases are common culprits

Missing indexes, too many queries per request and exhausted connection pools show up often.

Fix one, re-test

Remove one bottleneck and the next one appears. Change one thing and measure again.

See it in code

Walk through the code

sql
1-- Slow under load: check how this query runs2EXPLAIN ANALYZE3SELECT id, name, price4FROM products5WHERE category = 'shoes'6ORDER BY price7LIMIT 20;8 9-- The developer's fix, then you re-run the load test10CREATE INDEX idx_products_category_price11  ON products (category, price);

1/3EXPLAIN ANALYZE runs the query and reports how the database executed it and how long it took.

PostgreSQL syntax. EXPLAIN ANALYZE shows whether the database scans the whole table or uses an index.

Save yourself the pain

Common mistakes

Oops

Reporting 'the app is slow' with only the load tool's graphs.

Do this instead

Pair results with server and database monitoring to point at the slow layer.

Oops

Assuming more servers will fix any slowness.

Do this instead

If the database is the bottleneck, more app servers can make it worse. Find the real limit first.

Your mission

Read a query plan

~30 min

Quick check

Under load, response time is high, app server CPU is 30% and database CPU is 98%. Where is the bottleneck most likely?

Go deeper

  1. 1Given a hypothetical performance test result, list 3 possible bottleneck sources to investigate.
  2. 2Learn why isolating a bottleneck often requires monitoring at multiple system layers simultaneously.
  3. 3Understand this investigation often requires collaboration with engineers and DevOps.

More topics at this stop

Stuck on this topic? Ask an Insider

Get 1:1 guidance from people who've walked this exact path — on the InsideEdge app.

Download
InsideEdge