Troubleshooting performance issues
Edit on GitHubThis section helps you optimize the performance of your website by helping you detect and fix the most common performance troubleshooting issues.
Performance optimization has to start with the analysis or with the profiling.
Prerequisites
Before you start optimizing performance, make sure the following preconditions are met:
- You know and understand the problem. An example of a poorly defined problem: “Website is slow”. An example of a well-defined problem: “Web site is slow when I place an order with 25 products of the same SKU (SKU=001). URL: {URL} Credentials: {Instruction on how to get credentials}.”
If you do not have this information, then request additional data from the person who reported the problem.
- Check the profiling. You are free to choose any profiling tool you want. The ones that we prefer are New Relic and Blackfire.
New Relic
To profile with New Relic, do the following:
- Install and configure New Relic.
- Make sure New Relic is properly configured for your environment. For setup and configuration details, see Monitoring.
- Reproduce the problem in the necessary environment or request it to be reproduced by the customer. Note the following:
- It takes some time for New Relic to show the profiling.
- If the request does not meet the criteria, it does not appear in New Relic. Read more on the official New Relic website.
- Review the profiling. For a step-by-step guide on navigating New Relic APM, analyzing transactions, traces, databases, and errors, see APM — New Relic based troubleshooting.
Blackfire
For a guide on profiling with Blackfire, including Callgraph analysis and recommendations, see Blackfire profiling.
Common performance issues
The following articles help you troubleshoot specific performance problems:
- Redis session lock - Handling session lock issues and optimizing session management.
- N+1 problem - Identifying and fixing N+1 database query problems.
- External calls—several calls to Zed - Optimizing multiple calls to Zed.
- External calls take a lot of time - Handling slow external service calls.
- Slow Publish and Synchronization - Improving P&S performance.
- Not optimized Composer on the production environment - Optimizing Composer autoloader.
- Technology restrictions - Understanding technology limitations and their impact on performance.
APM-based troubleshooting
For a comprehensive guide on using New Relic APM to systematically identify and resolve performance bottlenecks, see APM — New Relic based troubleshooting.
Next steps
- Check that you have the latest performance releases.
- Check that you implemented the performance recommendations.
- If your problem is still not solved, analyze profiling as follows:
- Select the longest action under profiling.
- Optimize.
- Repeat.
- Check if your result is still good for future growth. Return to the previous step if needed.
- Share your experience:
- Contribute to public documentation.
- Share it with Spryker Community.
Thank you!
For submitting the form