This article is contributed. See the original author and article here.

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. 


 


Performance tuning 


Initially, our goal was to identify the parameter settings required to reach 300+ orders per minute. For performance testing, wleveraged 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 10node 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!

Brought to you by Dr. Ware, Microsoft Office 365 Silver Partner, Charleston SC.