It's common to use load testing tools, Application Performance Monitors (APMs), and profiling tools to find and fix performance issues in software systems. To simulate the number of users in production, we need to run load test-creating scenarios for the most commonly used functionalities of our system, and, at the same time, track and monitor the application health-measuring resources such as CPU, RAM, IO, heap usage, threads, and database access. At the output of these process, we can give some key recommendations to keep your software away from performance issues.
In the following section, we are going to explain the most common bottlenecks that we can find, and how to avoid them.