Azure Resource Manager (ARM) imposes limits and quotas on how many resources of each type you can provision per Azure Subscription, and even per Azure Region. Some limits are a hard maximum, while others are a soft limit that can be increases upon request. When working with Virtual Machines (VMs), Storage Accounts, Databases, and other resources in the Microsoft Azure cloud you can easily hit up against these limits, so it’s important to know they exist and how to work around them. This article will explain the details around the Limits and Quotas on resources within Microsoft Azure; including tips on how to work around these limits to scale as high as your organization needs.

Azure Subscription Limits and Quotas

Microsoft Azure is generally thought of as being a limitless and infinitely scalable cloud. Of course we do know that the “Cloud” is really made up of servers, racks, network switches, power supplies, and other computing hardware that makes up any data center. However, the infinitely scalable idea still persists. After all, it really does seem to be limitless when you can spin up a new VM, Storage Account, or other resource in the Microsoft Azure cloud in a few seconds or minutes and get computing.

The hard truth about the cloud is that being made up of real hardware there are in fact limits to it’s scalability. As a result, Microsoft does impose a few limitations to on a “Per Azure Subscription” basis via Subscription Limits and Quotas. Sure you can use multiple subscriptions to essentially get around the limits, but it’s important to first know what they are so you can plan your infrastructure accordingly.

Microsoft does impose a few limitations to on a “Per Azure Subscription” basis via Subscription Limits and Quotas.

Here’s the list of Default Limits (aka Soft Limits that can be increased) and Hard Limits (aka Maximum Limits) that can not be increased beyond:

Azure Resource Soft / Default Limit Hard / Max Limit
CPU Cores per Subscription 20 Contact support
Co-Administrators per Subscription Unlimited Unlimited
Resource Groups per Subscription 800 800
Storage Accounts per Subscription 200 250
Cloud Services per Subscription 20 200
Local Networks per Subscription 10 500
SQL Database Servers per Subscription 6 150
DNS Servers per Subscription 9 100
Reserved IPs per Subscription 20 100
Hosted service certificates per Subscription 400 400
Affinity Groups per Subscription 256 256
Alert Rules per Subscription 250 250
Resource Manager API Reads 15,000 per hour 15,000 per hour
Resource Manager API Writes 1,200 per hour 1,200 per hour
Resource Manager API request size 4,194,304 bytes 4,194,304 bytes
Tags per Subscription 10,000 10,000

You can view the official list of default and maximum limits for Azure Subscriptions within the official Azure documentation.

As you can see from the above table, many of the Subscription Limits are set by Default to the Maximum Limit. However, there are a few that are set lower than the Maximum Limit, and you can request to increase these limits if you need to go beyond them. One limit that’s easy to reach and require you to request an increase is the limit of 20 CPU Cores per Azure Subscription. It only takes a few VMs, especially with 2, 4, or more CPU Cores each to need an increase of this limit.

Some of the Maximum Limits aren’t as easy to get around; such as the Maximum Limit of 200 Storage Accounts per Azure Subscription. Due to this limit, you certainly can NOT provision a new Storage Account for every Virtual Machine (VM) that you host in Azure. You’ll need to plan out your Storage strategy appropriately when deciding on how many VMs will be sharing the same Storage Account for their Operating System .vhd’s and other Data Disks. Be sure to remember the IOPS scalability limits on Azure Storage Accounts when planning your VM Storage strategy too. If you need to run lots of VMs it is possible you will be required to utilize multiple Azure Subscriptions to meet your needs.

If you ever find the Hard Limits (or Maximum Limits) per Azure Subscription to be too limiting, you can always create multiple Azure Subscriptions for your organization.

Remember, if you ever find the Hard Limits (or Maximum Limits) per Azure Subscription to be too limiting, you can always create multiple Azure Subscriptions for your organization. This is actually an extremely common practice, not just for working with limits and quotas, but also for managing billing and reporting on cloud usage within Microsoft Azure across departments, business locations, divisions, cost centers, etc. In fact, it is an extremely common practice in Microsoft Azure for organizations to maintain multiple Azure Subscriptions as part of their cloud computing strategy.

Azure Region Limits and Quotas

In addition to the “Per Azure Subscription” limits and quotas, Azure Resource Management (ARM) enables the ability to set and maintain Limits and Quotas for an Azure Subscription on a “Per Azure Region” basis as well. These limits are set to a Default Limit (aka Soft Limit) that can be increased upon request, and a Maximum Limit (aka Hard Limit) per Azure Region per Azure Subscription.

Azure Resource Soft / Default Limit Hard / Max Limit
Virtual Machines (VMs) 20 per region 10,000
VM Total CPU Cores 20 per region Contact support
VM CPU Cores per Series (Dv2, F, etc.) 20 per region Contact support
Availability Sets 2,000 per region 2,000 per region
ExpressRoute Circuits per Subscription 10 per region
Virtual Networks 50 per region 500 per region

Azure Resource Group Limits

One of the little known facts regarding Limits and Quotas in Microsoft Azure is that even Resource Groups have limits on the number of resources and other things on an individual Resource Group. While these limits are rarely hit, it’s still good to know they exist.

Azure Resource Soft / Default Limit Hard / Max Limit
Resources per Resource Group (per resource type) 800 varies per resource type
Deployments per Resource Group 800 800
Resources per deployment 800 800
Management Locks (per unique scope) 20 20
Number of Tags (per resource or resource group) 15 15
Tag key length 512 512
Tag value length 256 256
Resources in Exported Template 200 200

Why are there Resource Limits and Quotas?

These limits and quotas are NOT some arbitrary limits that Microsoft imposes to keep you from fully utilizing the cloud. Microsoft Azure Limits and Quotas protect Microsoft and YOU (the customer) from gross overspending in the cloud by accident. In fact, the “Per Azure Subscription” and “Per Azure Region” limits and quotas are helpful for a couple different reasons.

  • Quotas help limit the ability of your Administrators, Developers and other employees from spending far more in the cloud than you’ve budgeted without taking away their flexibility and agility to do their jobs.
  • Limits help keep you cloud spending predictable by not allowing you to spin up the resources that could generate a huge monthly bill without you doing it on purpose. This save you and Microsoft money since they’d likely need to refund lots of cloud spending if all customers were allowed to go unchecked.
  • Limits help Microsoft throttle the growth of cloud usage; both within individual Azure Regions, as well as Globally across all their datacenter and regions. This allows Microsoft to ensure that individual customers aren’t able to overload any particular Azure Region or data center unexpectedly.

Resource Limits protect YOU from accidentally going bankrupt by generating huge monthly spend before realizing the full cost of your Azure Resources.

Resource Limits aren’t just for benefiting Microsoft. There are some side effects of Azure Resource Limits that help customers of Microsoft Azure better architect their applications and workloads for the cloud; specifically when it comes to “Per Azure Region” maximum limits. These maximum limits can cause you to utilize multiple Azure Regions in certain cases when provisioning resources within a single Azure Subscription. This can have the affect of causing you to spread your workloads across multiple data centers causing you to have a more resilient cloud footprint by not relying on a single data center or Azure Region for all your workloads.

Posted by Chris Pietschmann

Chris is a Microsoft MVP and has 15+ years of experience building enterprise systems both in the cloud and on-premises. He is also a Microsoft Certified (MCSD) Azure Solutions Architect. He has a passion for technology and sharing what he learns with others to help enable them to learn faster and be more productive.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s