Tuesday, June 16, 2020

AEM Performance Optimization Tips

AEM Performance Optimization Tips


  • 10% of the project efforts should be allocated to performance.
  • Performance optimization is ongoing activity and should have more preference after the go live where the real load comes into the picture
  • Simulate real scenarios
  • Establish solid goals
  • Take one bottle neck at a time
  • Guidelines 
    • 70% of the pages should take 100ms
    • 25% of the pages should take 100-300ms
    • 4% pages should take 300-500ms
    • 1% of the page should take 500-1000ms
    • No page should take more than 1000ms
  • Focus on dispatcher caching efficiency
  •  use of queries
  • No of child node should not exceed 1000 nodes
  • use java profiler
  • use performance monitor
    • collect as much information as possible before making optimization decisions
    • try to replicate
    • observe changes in code
    • check if the issue occurs only during certain time
  • monitor search request timing
  • limit the concurrent workflow processing
  • configure maximum parallel jobs
  • Do error scenario tests
  • Endurance tests
  • Dispatcher Tuning 
    • Calculate the dispatcher cache ratio : Pages served from cache vs page served from publisher
    • Consistent page encoding
    • Avoid url parameters because pages with parameters do not get cached. Use selectors instead.
    • Put title image file in the same location as page so that it can be invalidated when the page is updated.
    • Same way invalidate the image files used as navigation texts
    • Avoid free customization of pages and provide say a definite number of customized pages so that they can be cached.
    • Use sticky connections if possible.
  • Read here for backup performance in detail
  • set queue.maxparellel to 50% of your CPU capacity
  • create indexes for the queries most frequently searched
  • set -Doak.queryLimitMemory
  • set -Doa.queryLimitReads 
  • set -Dupdate.Limit
  • set -Doak.fastQuerySize = true
  • For Lucene Indexes set enable copyOnRead, copyOnWrite, Prefetch Index Files
  • While using file data store set the value of cacheSizeInMB and maxCacheBinarySize
  • Use offline compaction for TarMK
  • Allow all css and js to combine into clientlib.css and clientlib.js respectively
  • minify the files
  • Use MongoMK on author only and only if high load of concurrent users expected. E.g. 1000 users or more

No comments:

Post a Comment

Some more AEM 6 Interview Questions for Architects

 Some more AEM 6 Interview Questions for Architects 1. Consider you have a workflow with two steps. One step is to transfer the asset from s...