Recently, a colleague of mine wrote about the Windows Azure instance limits: http://blog.toddysm.com/2010/01/windows-azure-role-instance-limits-explained.html

His post is very complete, I recommend you have a look but here is my take:

These are default limits that are in place to ensure that Windows Azure will always have VMs available to all of our customers.  If you have a need for more capacity, we want to help!  Please contact us: http://go.microsoft.com/fwlink/?LinkID=123579

The limits are:

  • 20 Hosted Service Projects
  • 5 Storage Accounts
  • 5 roles per Hosted Service (i.e. 3 different web roles + 2 different worker roles or any such combination)
  • 20 CPU cores across all of your Hosted Service Projects

The first two are really easy to track, on the Development portal when you go to create a new service, it’ll tell you how many you have left of each:

image

5 roles per Hosted Service is also easy to understand, this corresponds to the number of projects you can add as roles to your Cloud Service – here I am hitting my role limit:

image

So let’s talk real quick about the 20 CPU core limit – note that the limit is on CPU cores, not on instances. 

When you configure your role, you can set the number of instances as well as the VM size:

image

The VM sizes of Small, Medium, Large and ExtraLarge are defined here: http://msdn.microsoft.com/en-us/library/ee814754.aspx

Today the CPU cores for each VM size are: (subject to change so always consult the MSDN link above for the latest information)

VM Size CPU Cores
Small 1
Medium 2
Large 4
ExtraLarge 8

So the number of CPU cores for a role is the (instance count) X (Number of CPU Cores for the selected VM Size).

If you add those up across all of your roles across all of your Hosted Service projects (staging and production slots) – this has to be lower than 20.

Quick example: if you have 5 Hosted Service projects with 1 role, 2 instances per role and Medium VM size, you’ve hit the limit.

The other key is that you not only need to stop your deployment to free up CPU cores, you also need to delete the deployment to reduce your CPU core count.

What about Windows Azure Storage quotas? 

It just so happens that another colleague of mine has written about this: http://blogs.msdn.com/frogs69/archive/2009/12/17/storage-quotas-and-core-allocation-on-windows-azure.aspx

Each storage account allows you to have 100TB of data across all of your blob, tables and queues.  As mentioned above, you can have up to 5 storage accounts.

If you are dealing with really large data sets, follow the link above to see the limits on the blobs, # properties in a table, entity and queue messages.