Just wanted to know if there are any whitepapers or information available for improving ATG application performances in production environment.
We have been doing some load/performance tests on our production environments and reports doesnt seems to be satisfactory.
The page loads show 10-15 secs load time which is obviously not upto industry standards.
The DB reports also shows a high number of RQLs which is taking a lot of memory.
We have implemented some caching strategies but doesnt seem to be doing enough.
So just wanted to know if there are any best practises at DB level or application level that we can leverage to improve performance.
Any ideas which anyone of you might have implemented in your projects?
All ideas welcome!
In production environment you must have already enabled the liveconfig settings. There are some performance related aspects covered in the ATG installation and configuration guide documentation which you can refer. Apart from all that you may want to check these links as well:
Thanks guys for the tips
But what i am looking forward for is some tips from coding and DB standpoint.
We have implemented majorly all the points from the launch checklist perspective.
Also we have scheduled the BCC deployments to take place at one particular interval of time instead of random deployments so that deployments does not impact
the commerce instances.
What i have in my mind is to improve application and DB performance.
Like from application perspective, is it a good idea to create many auxiliary relationshipd or keep one auxiliary table with say 30 columns.
What i mean to say is with each auxiliary relation atg will do a join in the backend sql. Does it impact performance?
is there a way like property grouping to reduce the number of joins?
Secondly for improving caching someone suggested to use Materialised views for repositories. I m not sure how much impacet that will have?
Also can someone suggest about EH cache in atg?
Does keeping many targeters on home page reduce performance or should we use slots as they have caching?
Also what if we load the entire catalog at the server startup?
Some of the things to look into.
1. Wrap you pages into TransactionDroplet since otherwise every repository lookup will be done in its own transaction and as XA transaction are resource intensive operation it will substantial increase page load time.
2. Use cache group in repository to control repository caching See Property Fetching section for Repository guide for more details
3. You can use EH cache to off load your heap load but its not going to improve performance of RQL query. If you are running out of heap space or seeing full GC cycle frequently then its good idea to explore EH cache