Short answer
A performance review starts by choosing one user action and measuring it layer by layer to prove where the slowness arises. Changes made without measuring usually only hide the problem; an improvement is not proven until it is measured again under the same conditions.
Define the user operation
Choose one action such as opening a report or saving an order. Record the user role, data volume and timing so the measurement can be reproduced.
Separate the layers
Collect browser loading times and traces across the server, database and external services. Make waiting time visible. Do not place personal data or credentials in diagnostic logs.
Test a hypothesis
If unnecessary database calls are suspected, measure query count and duration. Change one variable and compare under the same load. Multiple simultaneous changes obscure which one helped.
Report evidence
Include baseline and final measurements, test conditions, the bottleneck, changes and remaining risks. Load tests can affect production, so agree on the environment and limits first.
Common types of bottleneck
Most slowness comes down to a few typical causes: many database queries per page, missing or unused indexes, unbounded listings, heavy synchronous work and slow external service calls. Only measurement shows which applies in your case; this list is for forming hypotheses, not a substitute for results.
A practical evaluation exercise
Choose one slow user task. Record device, connection, data volume and time; correlate screen delay, API duration and database work with the same request identifier. Repeat under comparable conditions after a change. Compare the distribution of slower requests as well as the average, and check that errors did not increase.
Frequently asked questions
Two questions we are often asked on this topic.
Is access to production required for a performance review?
It is not. A test or staging environment with representative data is often enough. If real user data is needed, access and privacy limits should be in writing from the start.
Is the average duration a good measure?
No. The average hides the users who stay slow. Percentiles showing the distribution of slow requests, and the duration of a specific action at a specific data volume, are more informative.
Sources and further reading