The highest element of the configuration is the so-called Autoscale Settings. An Autoscale Setting is read by the autoscale engine to determine how to scale.
The Autoscale Settings contain one or more profiles. An autoscale profile is a combination of the following:
- Capacity settings: Capacity settings specify the minimum, maximum, and default values for the number of instances
- Rule: Each rule includes a Trigger (time or metric) and a Scale Action (up or down)
- Recurrence: This indicates when the autoscale engine should put a profile into effect
Let's go back to the topic of rules. As you have read, a rule contains a trigger (an action) that triggers scaling. The trigger is either based on a timestamp (for example, Saturday at 6:00 PM), on a metric (for example, CPU usage), or any combination of both.
Most metrics are typically provided by the Azure Monitor Common Metrics Pool. For the autoscale section, these are the following metrics:
Metric Name |
Unit |
Processor(_Total)% Processor Time |
Percent |
Processor(_Total)% Privileged Time |
Percent |
Processor(_Total)% User Time |
Percent |
Processor Information(_Total)Processor Frequency |
Count |
SystemProcesses |
Count |
Process(_Total)Thread Count |
Count |
Process(_Total)Handle Count |
Count |
Memory% Committed Bytes In Use |
Percent |
MemoryAvailable Bytes |
Bytes |
MemoryCommitted Bytes |
Bytes |
MemoryCommit Limit |
Bytes |
MemoryPool Paged Bytes |
Bytes |
MemoryPool Nonpaged Bytes |
Bytes |
PhysicalDisk(_Total)% Disk Time |
Percent |
PhysicalDisk(_Total)% Disk Read Time |
Percent |
PhysicalDisk(_Total)% Disk Write Time |
Percent |
PhysicalDisk(_Total)Disk Transfers/sec |
CountPerSecond |
PhysicalDisk(_Total)Disk Reads/sec |
CountPerSecond |
PhysicalDisk(_Total)Disk Writes/sec |
CountPerSecond |
PhysicalDisk(_Total)Disk Bytes/sec |
BytesPerSecond |
PhysicalDisk(_Total)Disk Read Bytes/sec |
BytesPerSecond |
PhysicalDisk(_Total)Disk Write Bytes/sec |
BytesPerSecond |
PhysicalDisk(_Total)Avg. Disk Queue Length |
Count |
PhysicalDisk(_Total)Avg. Disk Read Queue Length |
Count |
PhysicalDisk(_Total)Avg. Disk Write Queue Length |
Count |
LogicalDisk(_Total)% Free Space |
Percent |
LogicalDisk(_Total)Free Megabytes |
Count |
If there is no suitable metric, you also have the ability to use your own self-developed metrics for your applications (custom metrics). For example, with such a metric you can react to the usage of a shopping cart in a web shop application.
When defining a rule for a scale-up process, you should also set a suitable rule for a scale-down process at the same time.
Now I have to clarify something--the horizontal scaling works on the basis of the defined rules. But what if I need vertical scaling?
For the answer, let's go back to the diagram of Autoscale Settings and expand it as shown in the following diagram: