A few months ago, I published a blog post announcing the availability of guidance for deploying Magento in Azure Kubernetes Service (AKS). Today, I’m pleased to announce the release of an Azure Resource Manager (ARM) template, with variables for all scalability settings, designed to help deploy Azure resources for Magento.
Note: For details about the solution architecture for running Magento on Azure, see this reference architecture.
Important: This post and ARM template apply only to Azure Database for MySQL - Single Server.
Performance tuning
Initially, our goal was to identify the parameter settings required to reach 300+ orders per minute. For performance testing, we leveraged the Magento Performance Toolkit, which uses Apache JMeter to simulate customer behaviors such as signing in, browsing products, and checking out. At the beginning of the process, we discovered a few bottlenecks, such as serving static files, storing user sessions, using full-text search, and some issues related to networking. These factors contributed to a starting point of about 140 orders per minute. After we resolved all bottlenecks, we were able to achieve 340 orders per minute by using a 10-node AKS cluster with 16 core MySQL.
Template parameters
To ensure a great starting point for all customers, the ARM template we’ve released uses default values for each variable. This ensures that you can avoid unnecessary initial costs when working on a proof of concept that requires deploying a performant architecture. In all likelihood, you’ll want to update these values to ensure that they address your specific scenario and scalability requirements.
The following table lists parameters in the template that determine how much the cluster can scale. It provides detail about the default values included in the template, along with the parameters we used to achieve 340 orders per minute for comparison.
Parameter |
Default value |
Value for 340 orders/min |
aksNodePoolSize |
3 |
10 |
aksNodePoolVMSize |
Standard_DS2_v2 |
Standard_F8s_v2 |
mySQLSkuName |
MO_Gen5_4 |
MO_Gen5_16 |
mySQLSkuTier |
MemoryOptimized |
MemoryOptimized |
mySQLSkuFamily |
Gen5 |
Gen5 |
mySQLSkuCapacity |
4 |
16 |
mySQLStorageSize |
128000 |
512000 |
fileShareQuota |
512 |
16384 |
Keep in mind that while higher values generally provide better performance, they also tend to result in increased costs.
Guidance
If you have plans to deploy Magento on Azure, download the template, and review its contents. Use the Magento Performance Toolkit to help determine the most appropriate values based on your own cost and considerations.
I hope you’ll find this template useful. If you have questions or feedback about the template, feel free to reach out to the Ask Azure DB for MySQL alias for additional assistance!