We have a .Net application which we are migrating from a legacy hosting to Azure.
VM IIS -> Azure App Service
VM SQL -> Azure SQL
Storage -> Blob storage
We experience a performance degradation with the App Service version. To drill down the issue, what we did is create an Azure VM with the same configuration as the App Service plan :
App Service plan : P3v2 (4 cpu, 14GB RAM, Dv2 serie)
VM : D4s v3 (4 vCPU, 16GB RAM, MAX 6400 io)
App Service application setting WEBSITE_LOCAL_CACHE is set to Always and to the max size, 2GB. Same code has been use for the tests, multiples runs to ensure response time are consistents. The test consist of an API call which return a number of requested documents, as json. Application database & DB server is the same for all our tests, the Azure SQL database.
Test returning 1 document:
VM hosted version avg response time = 942ms
App Service version avg response time = 1121ms
Test returning 10 documents:
VM hosted version avg response time = 2675ms
App Service version avg response time = 3981ms
Metrics don't show any resources being overwhelmed (IO, CPU, SQL). Out of ideas we tried to change the SQL performance plan for a bigger one, no change.
With the WEBSITE_LOCAL_CACHE parameter not defined, response time is awfully slow, around 30 seconds and more.
The App Service, App Service plan, VM and the Azure SQL server are all in the same Azure Region, except the resource group (which has no performance impact, let me know if I'm wrong).
Let me know if you need more precisions or details.