With over 15 years of retail experience under their belt, most would firmly consider Games Paradise — Australia’s leading board games retailer — to be a bricks and mortar company.
You might then be surprised to learn that with thousands of products available and a loyal customer base, their online Magento store receives over 100,000 hits a month, and accounts for almost half of their overall sales.
Games Paradise turned to Anchor to ensure they could deliver a smooth and easy shopping experience for their customers even during the busiest times of the year.
Games Paradise knew something needed to be done in October when the performance of their Magento store was flagging. Simple pages were regularly taking 15 seconds to load, and customers reported being frustrated enough to not bother using the site.
Now a core part of their overall business, the online store had to be snappy. The end of the year was not far off and they knew that they’d be swamped with visitors in the lead up to Christmas, browsing for gift ideas and comparing prices. It also had to be reliable. While the doors of their two bricks-and-mortar locations might close every evening, their customers want games at all hours of the day.
With plenty of experience dealing with exactly this sort of problem, Anchor dived in and started hunting.
The existing configuration used the suPHP module loaded into Apache. While this is great for security and consistency of behaviour on a shared server, it’s no good for performance on a heavily trafficked site. The MySQL database was also running on the same server, competing for limited memory resources. Out-of-the-box, untuned configuration options were a road straight to mediocre performance.
A switch to nginx for the webserver, with PHP running via FastCGI, removed a lot of per-request overhead, allowing us to tune the PHP processes for the large number of customers. A PHP opcode cache was also added to squeeze a little more performance out of the stack, an optimisation that isn’t available when using suPHP.
Once the webserving components were sewn up, we turned our attention to the MySQL backend, as it was clear that it was becoming a bottleneck. Magento themselves provide a good amount of advice on tuning MySQL for performance, but we also looked deeper into the long-running queries and added extra indexes to help things along.
As traffic increased further, we made the decision to give MySQL its own server. Running a database and serving lots of web users are activities that will compete with each other for resources when the hardware is shared. MySQL in particular benefits from being allowed to consume as much RAM as possible. This division of roles also has the benefit of letting us choose the most appropriate hardware specs for the job, as each component may scale independently.
To help us quantify our improvements, we made use of the performance data we collect on the server. Taken over the couple of days we were making changes, you can see how the peak-period spikes have settled down, giving consistently fast page response times of 1-2 seconds.
Looking to the future
In this way Games Paradise has grown from a small server, to a big server, to two big servers, only ever paying for what they need. Not being committed to a large amount of spare capacity is especially valuable in today’s tough retail environment, where consumer sentiment can be volatile. The extensive use of virtualisation means upgrades are quick and can be performed on-demand.
As Games Paradise’s customers continue beating down the doors, they’ll be safe in the knowledge that Anchor’s infrastructure can painlessly scale-up and rise to the challenge.