Performance Tree performance-tree
Scope scope
The following diagram is meant to provide guidance on the steps to take to troubleshoot performance issues. It is split in five sections for easier reading.
Each step in the diagram is linked to a documentation resource or a recommendation.
Prerequisites and Assumptions prerequisites-and-assumptions
The assumption is that a performance issue is observed on a given page (either an AEM console or a web page) and can be reproduced consistently. Having a way to test or monitor the performance is a pre-requisite before starting the investigation.
The analysis starts at step 0. The goal is to determine which entity (Dispatcher, external host, or AEM) is responsible for the performance issue then determine which area (server or network) should be investigated.
Section 1 section
Section 2 section-1
Section 3 section-2
Section 4 section-3
Section 5 section-4
Reference Links reference-links
You can use standard HTTP request analysis in the browser to analyze the request flow. For more info on how to do this analysis on Chrome, see:
HEAD
requests to AEM for authentication before delivering the cached resource. Look for HEAD
requests in the AEM access.log
. For more information, see Logging.Investigate the network layer for saturation and latency issues.
For the author tier, it is recommended that the latency does not surpass 100 milliseconds.
For more information on performance optimization tips, see this page.
You can check for slow requests by analyzing the request.log
or by using rlog.jar
.
For more information about using rlog.jar, see this page.
- Assets Synchronization Service
- Multiple DAM Instances
- Performance tuning tips article here.
How to improve cache ratio; make requests cache-able (Dispatcher best practices)
Also, consider the below settings to optimize your caching configurations
- Set a no-cache rule for HTTP request that is not GET
- Configure query strings to not be cacheable
- Do not cache URLs with missing extensions
- Cache authentication headers (possible since Dispatcher version 4.1.10)
You can download the latest Dispatcher version at this location:
and 47
Is the Keep-Alive
header present in the different requests to reuse connections? Otherwise, it would mean that each request leads to another connection establishment, which introduces unnecessary overhead. (Standard HTTP request analysis in the browser)
You can check the Proxy Server tool to check for Keep-Alive connections.
- Concatenate resources (images, CSS sprites, JSON)
- Clientlibs embedding:
- Creating Client Library Folders - see heading Using embedding to minimize requests