This holiday season two of the hardest to purchase tech products have been the PlayStation 5 and the Xbox Series X/S.
Major retailers have been struggling to deal with issues like their e-commerce sites crashing or creating errors on cart or checkout or having to turn cart and checkout off on the sites or adding default pages in place of product pages to cope with the demand of customers and scalper bots.
We are going to deal with one of the most commonly used plugins for e-commerce in WordPress which is WooCommerce.
WooCommerce on a solid host with a well-selected plugin stack would easily be able to deal with 5-10 orders being created per minute on a site. This would not even include the number of add to cart session data being written in order for that number of orders to be created on the site.
WooCommerce uses a dedicated database table for storing session data in it. In version 2.5 of WooCommerce, the new session handler was included in core. Before the change session, data would be saved into the options database table which resulted in all types of performance issues.
One of the options for adding a queue to your site would be Queue-it. In the case of e-commerce is would be a virtual waiting room which helps to be able to deal with very high traffic on your site. Queue-it would also help your site be able to deal with bots and abuse defense.
If you wanted to set the cart expiration to be 10mins then you could use this code snippet on your site. This is minutes in seconds so 10 minutes to seconds is 600.
add_filter('wc_session_expiration' , 600);
If you wanted to set the cart expiration to 15mins then change the value to 900.
add_filter('wc_session_expiration' , 900);
Something else to be aware of would be an ordering queue for your site.
There are a couple of plugins that could be used to limit the number of orders that are created on the site such as Limit Orders for WooCommerce. The plugin adds control over being able to limit the number of orders being created on a site over a set number of hours, days, or weeks. It does not have control for being able to set limits for ordering by product.
It is also possible in WooCommerce without a plugin to be able to set limits on products being purchased.
Make sure that your site is running the most current version of WooCommerce this will mean it has any of the bug or security fixes as well as the newest features. If you are still on version 3.9.3 version of WooCommerce then all of the Action Scheduler actions would still be stored as posts and comments and not using the custom database tables it uses.
Be aware of any plugins and services running on your site which could create a flood of Action Scheduler actions or webhooks. Klaviyo is one example of a service that can create performance issues on the front-end of a site as well as webhooks in the site’s database.
An easy to use load impact testing service is loader.io. You can create a test for your site and then ramp up to a set number of virtual users over a set number of minutes. Using load impact testing will give you a decent idea about the average response time your site will have when the number of users on your site increases at peak times.
Using a number of these solutions for cart expiration, queuing, and load impact testing will help your site be able to deal with high demand.