I'm trying to better understand the scalability behavior of my Premium function apps but I'm confused regarding terminology. Specifically I was trying to understand how many "servers" and how many "containers" of my app are running, but I can't be sure what these metrics precisely are:
- AppRoleInstance
- HostInstanceId
- ProcessId
At first I thought a "Host" would be close to a VM and an "Instance" would be close to a container, but according to what I see that might be actually the other way around. And the dcount of ProcessId varies between 1 & 2 on a Always Available Function App with minimum 3 so I can't really understand what this process-id is. The AppRoleInstance and the HostInstanceId are matching most of the time except for some "host" spikes. For reference the query I'm using is similar to this:
AppTraces
| where AppRoleName = <function-app-name>
| summarize
dcount(tostring(AppRoleInstance)),
dcount(tostring(Properties.HostInstanceId)),
dcount(tostring(Properties.ProcessId))
by bin(TimeGenerated, 1h)
| render timechart
Process Id gets assigned in Kudu site as soon as host is initiated for a function.