April 23, 2020
Estimated Post Reading Time ~

AEM performance Analysis from top to Bottom for each layer of the system

Reference Links
Step
Title
Resources
Step 0
Analyze Request Flow
You can use standard HTTP request analysis in the browser to analyze the request flow. For more info on how to do this on Chrome, see:
Step 2
Are requests coming from external hosts?
You can use standard HTTP request analysis in the browser to analyze the request flow. See the above links on how to do this on Chrome.
Step 3
Can the requests be cached?
For more information on cacheable requests and general Dispatcher performance optimization advice, see Dispatcher Performance Optimization.
Step 4
Are requests coming from the Dispatcher?
Check the Dispatcher debugging documentation to see if the requests are cached properly.
Step 5
Is the Dispatcher trying to authenticate each request via AEM?
Check if the dispatcher sends HEAD requests to AEM for authentication before delivering the cached resource. You can do this by looking for HEAD requests in the AEM access.log. For more information, see Logging.
Step 6
Is the geographic location of the Dispatcher far away from the users?
Move the Dispatcher closer to the users.
Step 7
Is the network layer of the Dispatcher OK?

Investigate the network layer for saturation and latency issues.
Step 8
Is the slowness reproducible with a local instance?

Use Tough Day to replicate "real world" conditions from the production instances. If this is not realistic for the slace of your development, make sure to test the production instance (or an identical staging one) in a different network context.
Step 9
Is the geographical location of the server far away from the users?
Move the server closer to the users.
Steps 10 and 29
Investigate network layer
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.
Step 11
Move server closer or add one per region

Step 12
Troubleshoot AEM server
Check the following sub steps in the diagram for more information.
Step 13
Check hardware requirements
Check the documentation on Hardware Sizing Guidelines.
Step 14
Check for frequent causes of performance issues

Step 15
Find slow requests
You can check for slow requests by analysing the request.log or by using rlog.jar.
For more information about using rlog.jar, see this page.
Step 16
Profile server
For information about profiling tools you can use with AEM, see Tools for Monitoring and Analyzing Performance.
Step 17
Find slow methods in profiling

Step 18
Common scenarios of profiling
See Analyzing Specific Scenarios in the Performance Optimization section.
Step 19
100% CPU
Step 20
Out of memory

1.              Out Of Memory
2.              My application throws out-of-memory errors
3.              Analyze Memory Problems on Helpx.
Step 21
Disk I/O
See the Disk I/O section in the Monitoring and Maintaining documentation.
Steps 22 and 22.1
Cache ratio
Step 23
Slow queries
Step 24
Repository tuning
·                Performance Tuning Tips
·                Configuring for Performance
·                Repository Performance Tuning
Step 25
Workflows running
·                Concurrent Workflow Processing
·                Configure the Queue for a Specific Workflow
·                Regular Purging of Workflow Instances
·                Transient Workflows
Step 26
MSM Infrastructure
Step 27
Assets tuning
1.              Assets Synchronization Service
2.              Multiple DAM Instances
3.              Performance tuning tips articles here and here.
Step 28
Unclosed sessions

Step 30
Move dispatcher closer (add one per "region"?)

Step 31
Use CDN in front of dispatcher
Step 32
Use session management at the dispatcher level to offload AEM server
Step 33
Make requests cacheable
1.              General Dispatcher Configuration
2.              Configuring the Dispatcher Cache
How to improve cache ratio; make requests cache-able (Dispatcher best practices)
Also, take into consideration the below settings in order to optimize your caching configurations
1.              Set a no-cache rule for HTTP requesrst that are not GET
2.              Configure query strings to not be cacheable
3.              Do not cache URLs with missing extensions
4.              Cache authentication headers (possible since Dispatcher version 4.1.10)
Step 34
Upgrade dispatcher version
You can download the latest Dispatcher version at this location:
https://www.adobeaemcloud.com/content/companies/public/adobe/dispatcher/dispatcher.html
Step 35
Configure dispatcher
Step 36
Check cache invalidation

·                Cache Invalidation for the Author tier;
·                Cache Invalidation for the Publish tier.
Steps 37 and 38
Lazy-loading
Step 39
Use pre-connect to reduce connection overhead
See the Gem Session indicated above. Also, additional documentation preconnect on W3c:https://www.w3.org/TR/resource-hints/#dfn-preconnect
Steps 40 and 41
External hosts latency and response time
Investigate the latency and response time for the external hosts.
Steps 45
and 47
Using HTTP/2
See the Gem Session for steps 37,38 and 39. Also, check out this forum post on HTTP/2 support.
 
Step 49
Shrink payload size
Steps 42 and 43
Keep-Alive
Is the Keep-Alive header present in the different requests to re-use connections? Otherwise, it would mean that each requests 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.
Step 44
How many requests are made?
Perform standard HTTP request analysis in the browser.
Step 46
Reduce number of requests
1.              Concatenate resources (images, CSS sprites, JSON, etc.)
2.              Clientlibs embedding:
a.                                 Creating Client Library Folders - see heading Using embedding to minimize requests
Step 48
What is the size of the payload?
Standard HTTP request analysis in the browser
Steps 50 and 51
JS code blocking


By aem4beginner

No comments:

Post a Comment

If you have any doubts or questions, please let us know.