Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описаны колебания при автомасштабировании и как их избежать.
Зацикливание относится к циклическому условию, вызывающему серию противодействующих событий. Колебания происходят, когда событие масштабирования активирует противоположное событие масштабирования.
Автомасштабирование оценивает ожидающее действие горизонтального уменьшения масштаба, чтобы узнать, приведет ли оно к колебаниям. В случаях, где могут возникнуть колебания, автомасштабирование может не выполнять действие масштабирования и переоценить его при следующем запуске, или автомасштабирование может масштабировать с добавлением меньшего количества экземпляров, чем указано. Процесс оценки автомасштабирования происходит каждый раз, когда выполняется подсистема автомасштабирования, то есть каждые 30–60 секунд в зависимости от типа ресурса.
Чтобы гарантировать наличие достаточных ресурсов, проверка на потенциальные колебания не выполняется при масштабировании. Автомасштабирование откладывает событие сокращения ресурсов лишь для того, чтобы избежать колебаний.
Например, у нас действуют следующие правила:
- Увеличить масштаб на 1 экземпляр, когда средняя загрузка ЦП превышает 50 %.
- Уменьшайте количество экземпляров на 1, если среднее использование процессора ниже 30 %.
В таблице ниже в момент T0, когда использование составляет 56%, запускается действие масштабирования, что приводит к загрузке ЦП в 56% на 2 экземпляра. Среднее значение составляет 28 % для набора значений шкалы. Так как 28 % меньше порогового значения масштабирования, автомасштабирование должно уменьшить масштаб обратно. Снижение масштаба вернет набор масштабов к 56 % использования процессора, что инициирует действие увеличения масштаба.
Время | Число экземпляров | ЦП% | % ЦП на экземпляр | Масштабное мероприятие | Результирующее число экземпляров |
---|---|---|---|---|---|
T0 | 1 | 56 % | 56 % | Горизонтальное увеличение масштаба | 2 |
T1 | 2 | 56 % | 28% | Увеличение масштаба | 1 |
T2 | 1 | 56 % | 56 % | Горизонтальное увеличение масштаба | 2 |
T3 | 2 | 56 % | 28% | Увеличение масштаба | 1 |
Если оставить без контроля, будет происходит непрерывный ряд событий масштабирования. Однако в этом случае механизм автомасштабирования откладывает событие уменьшения масштаба на T1 и проводит повторную оценку при следующем запуске функции автомасштабирования. Масштабирование произойдет только после того, как средняя загрузка ЦП упадет ниже 30%.
Распространенные причины колебаний:
- Небольшие или отсутствующие промежутки между порогами.
- Масштабирование до более чем одного экземпляра.
- Увеличение и уменьшение масштаба на основе разных метрик.
Небольшие или отсутствующие промежутки между порогами.
Чтобы избежать колебаний, предусмотрите достаточную разницу между пороговыми значениями.
Например, в следующих правилах отсутствует зазор между порогами, что приводит к колебаниям.
- Горизонтальное увеличение масштаба при количестве потоков >=600
- Горизонтальное уменьшение масштаба при количестве потоков < 600
В приведенной ниже таблице показаны возможные результаты этих правил автомасштабирования:
Время | Число экземпляров | Количество потоков | Количество потоков на экземпляр | Масштабное мероприятие | Результирующее число экземпляров |
---|---|---|---|---|---|
T0 | 2 | 1250 | 625 | Горизонтальное увеличение масштаба | 3 |
T1 | 3 | 1250 | 417 | Увеличение масштаба | 2 |
- В момент T0 существует два экземпляра, обрабатывающие 1250 потоков, то есть 625 потоков на экземпляр. Автомасштабирование расширяет количество до трех инстанций.
- После горизонтального увеличения масштаба в момент T1 у нас есть те же 1250 потоков, но экземпляров три, поэтому только 417 потоков на экземпляр. Активируется событие увеличения масштаба.
- Перед уменьшением масштаба автомасштабирование оценивает, что произойдет, если уменьшение масштаба произойдет. В этом примере 1250 / 2 = 625, то есть 625 потоков на экземпляр. Система автоматического масштабирования должна будет сразу же снова увеличить масштаб после его уменьшения. Если затем вновь увеличить масштаб, вся процедура будет повторяться, приводя к циклическим колебаниям.
- Чтобы избежать такой ситуации, автомасштабирование не уменьшает масштаб. Автомасштабирование пропускает текущее событие масштабирования и повторно оценивает правило в следующем цикле выполнения.
Кажется, что автомасштабирование не работает, так как ни одно событие масштабирования не происходит. Перейдите на вкладку Журнал выполнения на странице параметров автомасштабирования, чтобы проверить, есть ли колебания.
Чтобы избежать таких ситуаций, задавайте пороговые значения с адекватной разницей. Например,
- Горизонтальное увеличение масштаба при количестве потоков >=600
- Уменьшение масштаба, если количество потоков < 400
Если для уменьшения масштаба требуется, чтобы потоков было меньше 400, общее количество потоков должно быть меньше 1200, чтобы произошло событие масштабирования. См. таблицу ниже.
Время | Число экземпляров | Количество потоков | Количество потоков на экземпляр | Масштабное мероприятие | Результирующее число экземпляров |
---|---|---|---|---|---|
T0 | 2 | 1250 | 625 | Горизонтальное увеличение масштаба | 3 |
T1 | 3 | 1250 | 417 | нет события масштабирования | 3 |
T2 | 3 | 1180 | 394 | увеличение масштаба | 2 |
T3 | 3 | 1180 | 590 | нет события масштабирования | 2 |
Масштабирование до более чем одного экземпляра.
Чтобы избежать колебаний при увеличении или уменьшении масштаба более чем на один экземпляр, автомасштабирование может добавлять или удалять меньше экземпляров, чем указано в правиле.
Например, следующие правила могут вызвать колебания:
- Масштабировать в 20 раз, когда количество запросов >=200 на экземпляр.
- ИЛИ если ЦП > 70 % на экземпляр.
- Уменьшите количество экземпляров на 10, когда количество запросов <=50 на экземпляр.
В приведенной ниже таблице показаны возможные результаты этих правил автомасштабирования:
Время | Количество случаев | ЦП | Число запросов | Масштабное мероприятие | Результирующие инстанции | Комментарии |
---|---|---|---|---|---|---|
T0 | 30 | 65 % | 3000, или 100 на экземпляр. | Нет события масштабирования | 30 | |
T1 | 30 | 65 | 1 500 | Уменьшить количество инстанций на 3. | двадцать семь | Уменьшение масштаба на 10 экземпляров приведет к увеличению загрузки ЦП выше 70%, что приведет к необходимости увеличения мощности. |
В момент T0 приложение работает с 30 экземплярами, общее число запросов составляет 3000, а загрузка ЦП — 65 % на экземпляр.
В момент T1, при падении количества запросов до 1500, то есть 50 запросов на экземпляр, автомасштабирование попытается уменьшить количество экземпляров на 10 до 20. Однако автомасштабирование оценивает, что загрузка ЦП при 20 экземплярах будет выше 70 %, что вызовет событие масштабирования.
Чтобы избежать колебаний, подсистема автомасштабирования оценивает загрузку ЦП для числа экземпляров, превышающего 20, до тех пор, пока не найдет количество экземпляров, при котором все метрики останутся в пределах пороговых значений.
- Держите загрузку процессора ниже 70%.
- Убедитесь, что количество запросов на экземпляр превышает 50.
- Уменьшите количество экземпляров до менее 30.
В этой ситуации автомасштабирование может уменьшить число экземпляров на 3, с 30 до 27, чтобы соблюсти все правила, хотя в правилах указано, что нужно удалить 10 экземпляров. В журнал действий вносится сообщение с описанием, того, что масштаб будет уменьшен на другое число, чтобы избежать колебаний
Если автомасштабированию не удается найти подходящее количество экземпляров, оно пропустит событие масштабирования и выполнит повторную оценку во время следующего цикла.
Примечание.
Если механизм автомасштабирования обнаруживает, что в результате масштабирования до заданного числа экземпляров могут возникнуть колебания, он также попробует масштабировать до меньшего числа экземпляров между текущим количеством и заданным количеством. Если в этом диапазоне нестабильность не возникает, автомасштабирование продолжит операцию с новым целевым значением.
Файлы журналов
Найти колебания в журнале действий можно с помощью следующего запроса:
// Activity log, CategoryValue: Autoscale
// Lists latest Autoscale operations from the activity log, with OperationNameValue =="Microsoft.Insights/AutoscaleSettings/Flapping/Action
AzureActivity
|where CategoryValue =="Autoscale" and OperationNameValue =="Microsoft.Insights/AutoscaleSettings/Flapping/Action"
|sort by TimeGenerated desc
Пример записи в журнале действий для колебания:
{
"eventCategory": "Autoscale",
"eventName": "FlappingOccurred",
"operationId": "1111bbbb-22cc-dddd-ee33-ffffff444444",
"eventProperties":
"{"Description":"Scale down will occur with updated instance count to avoid flapping.
Resource: '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/ed-rg-001/providers/Microsoft.Web/serverFarms/ScaleableAppServicePlan'.
Current instance count: '6',
Intended new instance count: '1'.
Actual new instance count: '4'",
"ResourceName":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/rg-001/providers/Microsoft.Web/serverFarms/ScaleableAppServicePlan",
"OldInstancesCount":6,
"NewInstancesCount":4,
"ActiveAutoscaleProfile":{"Name":"Auto created scale condition",
"Capacity":{"Minimum":"1","Maximum":"30","Default":"1"},
"Rules":[{"MetricTrigger":{"Name":"Requests","Namespace":"microsoft.web/sites","Resource":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-001/providers/Microsoft.Web/sites/ScaleableWebApp1","ResourceLocation":"West Central US","TimeGrain":"PT1M","Statistic":"Average","TimeWindow":"PT1M","TimeAggregation":"Maximum","Operator":"GreaterThanOrEqual","Threshold":3.0,"Source":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ed-rg-001/providers/Microsoft.Web/sites/ScaleableWebApp1","MetricType":"MDM","Dimensions":[],"DividePerInstance":true},"ScaleAction":{"Direction":"Increase","Type":"ChangeCount","Value":"10","Cooldown":"PT1M"}},{"MetricTrigger":{"Name":"Requests","Namespace":"microsoft.web/sites","Resource":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-001/providers/Microsoft.Web/sites/ScaleableWebApp1","ResourceLocation":"West Central US","TimeGrain":"PT1M","Statistic":"Max","TimeWindow":"PT1M","TimeAggregation":"Maximum","Operator":"LessThan","Threshold":3.0,"Source":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ed-rg-001/providers/Microsoft.Web/sites/ScaleableWebApp1","MetricType":"MDM","Dimensions":[],"DividePerInstance":true},"ScaleAction":{"Direction":"Decrease","Type":"ChangeCount","Value":"5","Cooldown":"PT1M"}}]}}",
"eventDataId": "dddd3333-ee44-5555-66ff-777777aaaaaa",
"eventSubmissionTimestamp": "2022-09-13T07:20:41.1589076Z",
"resource": "scaleableappserviceplan",
"resourceGroup": "RG-001",
"resourceProviderValue": "MICROSOFT.WEB",
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"activityStatusValue": "Succeeded"
}
Следующие шаги
Дополнительные сведения об автомасштабировании см. в следующих ресурсах: