3
votes

We're hosting 3 separate websites on a single app service plan. This plan is configured to run 3 small instances (S1). I understand this to mean 3 separate servers each with 1 CPU.

If only one of the three websites experiences very high traffic from a single source (another offsite server) how is the load balanced across the 3 instances?

Are all of the requests going to round-robin or all try to go to a single instance? How do I control or test this?

Is the single website restricted to a fraction/portion of the resources available on a single instance when there are other sites?

What are the advantages of running multiple single CPU instances vs a single instance with multiple CPUs with Azure Websites? (Besides availability)

We've attempted to load test one of the sites and it seems to never use more than 10-15% of the CPU when we are slamming only 1 site and the other 2 have no traffic. This is what made me suspicious of the load balance.

1

1 Answers

6
votes

Your first paragraph is correct. You will have 3 S1 servers allocated to your sites.

Each server will host all 3 sites. The requests to any site will be routed at random to any of the servers.

However, by default sticky sessions are enabled, which means that a single client will always hit the same server for the same site. So if one client is really hammering a site all the load will go to a single server.

You can disable this behavior by disabling ARR's Instancy Affinity for the site. You do that by setting the custom header Arr-Disable-Session-Affinity = false in your web.config file.

More detailed instructions here: https://azure.microsoft.com/blog/2013/11/18/disabling-arrs-instance-affinity-in-windows-azure-web-sites/