At the Insight West 2015 event, our co-founder Russell Moore shared holiday readiness tips for Oracle Commerce websites. He spent nearly two decades building and managing Oracle Commerce/ATG sites for businesses all over the world and the list below is comprised of some best practices he learned during his long career in the industry.

 

DETERMINE ANTICIPATED PEAK TRAFFIC

Historically, we saw many clients come on board and refer to the data from Google Analytics (e.g. User Sessions, PageViews, etc.) as their peak traffic. While those data are very useful on many occasions, sizing your hosting environment for holiday traffic is not one of them.
In order to scale your hosting environment, you need to know anticipated peak requests per second at the server level.

 

SCALE THE ENVIRONMENT

Among the nice features of the Oracle Commerce/ATG platform is its ability to scale horizontally. You almost never need to scale the database. Usually, it is app servers, sometimes search servers, and very rare web servers.

 

LOAD TEST
  • Execute multiple scenarios concurrently modeled after real traffic
    If you only test 1 scenario at a time, your load test will produce unrealistic (and pretty much unusable) results.
  • Use an APM to watch the load test live
    Just load testing to see where it tips over is not as useful as having somebody watching what causes the slow down (garbage collection, JVM, third party, etc). This shows you where the problems are and what to focus on to improve performance.
    We saw many times how small things that would cause things to tip over were easily switched off. As the result, the speed sometimes would double or even triple. Identifying those small things allows you to quickly go and change them. As the result, you get a much better load test and better tuning.
  • Plan on multiple runs
    Do a test run and then do some fixes. Then, load test again. Do it at least twice. If you do it more than two times it would be even better.
  • Don’t get choked up on using the same logged-in user
    Using the same user across multiple sessions will cause your cart to merge. As the result, you get unrealistic results (really bad unrealistic results). Make sure that you create new test users for different scenarios.
  • Lock-off users, take real orders that you can throw away later
    If you can do it (not all businesses can) load the test in the middle of the night (or another low traffic time for your site) and lock your users up. This way you can see what your site can really do. You will be able to place orders all the way from the end.
    Make a copy of your database before you do it and when you are done just delete the latest database (one that you used for the test) and use the previous copy of the database.

 

TUNE SYSTEMS
  • Look for nonfunctional indexes and SQLs that cause problems in your database
    Those are things that build up over time. Some of them you might not even notice on a regular basis but when you hit peak traffic those things can cause serious performance issues.
  • Look at JVM SQL and cache sizes
    Check outATGLaunchChecklist for tips on tuning.
  • Test code changes
    Over the cause of the year, you add new features and do not necessarily test all those features. This is the time of the year when you have to do it. Make sure you leave enough time between those tests and the holiday season as you might identify issues with those changes and might need time to fix and test them again.
  • Maximize RAM utilization by JVMs
    Sometimes under high load JVMs react very differently. You would want to maximize the use of the RAM on boxes that you use. We sometimes have clients who panic when they see that RAM on the JVM board is close to 100% but it is actually a good thing.

 

OPTIMIZE CACHE
  • Disable Oracle Database AMM
    With Oracle Database you would want to crank up the SGAs and if you are using AMM you should check for validity. You should have enough cache to cache the whole database.
  • Use Cache Droplets
    Use Cache Droplets when you have content on a web page that should be the same for many visitors. When you use this cache, the application stores the pieces that can be cached across multiple requests for multiple users in a hash map and regenerate them as needed. This cache significantly reduces CPU usage that would be required to render that content dynamically.
  • Opt for Repository Cache instead of Inventory and Price Caches
    Under high load, those cache components have significant performance problems. Disable those caches and use Repository Cache instead.
  • Set up cluster caching
    The larger the hosting environment for the site more beneficial Cluster Wide Cache becomes for e-commerce businesses. For instance, if you are running 16 instances you’re caching 16 copies of every file which means you’re using 16 times the RAM that you really need to be using and that means that caching validation and updates all have to be dealt with in 16 different locations. Creating a centralized cache using tools such as Coherence means that you cache data just once.

 

USE A REPUTABLE CDN

We had one client in 2014 whose CDN actually slowed down its site. It was faster going directly to the origin than when directed to CDN.

 

PLAN AROUND TRAFFIC
  • Disable back-ups and the high-IO jobs
    There are many things that you do on a regular basis. However, we can all agree that Black Friday and Cyber Monday are special days for retailers. Therefore, treat them special by dialing those jobs down.
  • Plan bulk data loads and BCC deployments around the traffic
    Push catalog changes, upload images, etc. before or after the promotion was sent out to minimize traffic spikes. So instead of pushing the site changes on the site the same morning as you send emails do it the evening before that.
  • Schedule penetration tests around your load tests and peak traffic
    Regular penetration tests sometimes cause performance anomalies. You don’t have to have them all the time. So turn them off during the holiday weekend. You only need to run them quarterly or weekly.
  • Send the smaller number of emails at once
    We see it quite often – the marketing team would send promotional emails to 3,000 people at 8 am. Don’t do that! Send smaller number of emails at once, and pace them (1,000 at 7 am; 1,000 at 8 am ; 1,000 at 9 am). This way your site traffic will be more distributed in time and less spiky.

Have a holiday readiness advice to add to this list? Leave a comment below.