Otomatik Ölçeklendirme'de Dokunma
Bu makalede, otomatik ölçeklendirmenin nasıl önlenip önlenemeye çalışıldığı açıklanır.
Flapping, bir dizi karşıt ölçek olayına neden olan bir döngü koşulunu ifade eder. Ölçek olayı karşı ölçek olayını tetiklediğinde, kanat çırpma gerçekleşir.
Otomatik ölçeklendirme, beklemedeki bir ölçeği daraltma eylemini değerlendirir ve bunun kanat çırpmaya neden olup olmadığını gösterir. Flapping işleminin gerçekleşebileceği durumlarda, otomatik ölçeklendirme ölçek eylemini atlayabilir ve sonraki çalıştırmada yeniden değerlendirebilir veya otomatik ölçeklendirme, belirtilen kaynak örneği sayısından daha az ölçeklendirilebilir. Otomatik ölçeklendirme değerlendirme işlemi, kaynak türüne bağlı olarak otomatik ölçeklendirme altyapısı her çalıştığında (30 ile 60 saniyede bir) gerçekleşir.
Kaynakların yeterli olduğundan emin olmak için, ölçeği genişletme olayları için olası göz atma denetimi gerçekleşmez. Otomatik ölçeklendirme, yalnızca ölçeği daraltma olayını erteler ve kanat çırpmasını önler.
Örneğin, aşağıdaki kuralları varsayalım:
- Ortalama CPU kullanımı %50'nin üzerinde olduğunda ölçeği 1 örnek artırarak genişletme.
- Ortalama CPU kullanımı %30'un altında olduğunda örnek sayısını 1 örnek azaltarak ölçeklendirin.
Aşağıdaki T0 tablosunda, kullanım %56 olduğunda bir genişletme eylemi tetiklenir ve 2 örnekte %56 CPU kullanımıyla sonuçlanır. Bu, ölçek kümesi için ortalama %28 verir. %28 ölçeği daraltma eşiğinden az olduğundan otomatik ölçeklendirme ölçeği yeniden daraltmalıdır. 'de ölçeklendirme, ölçek kümesini %56 CPU kullanımına döndürerek ölçeği genişletme eylemini tetikler.
Saat | Örnek sayısı | CPU% | Örnek başına CPU yüzdesi | Olayı ölçeklendirme | Sonuçta elde edilen örnek sayısı |
---|---|---|---|---|---|
T0 | 1 | 56% | 56% | Ölçeği genişletme | 2 |
T1 | 2 | 56% | %28 | Ölçeği daraltma | 1 |
T2 | 1 | 56% | 56% | Ölçeği genişletme | 2 |
T3 | 2 | 56% | %28 | Ölçeği daraltma | 1 |
Denetimsiz bırakılırsa, devam eden bir dizi ölçek olayı olacaktır. Ancak bu durumda, otomatik ölçeklendirme altyapısı T1'de ölçeklendirme olayını erteler ve sonraki otomatik ölçeklendirme çalıştırması sırasında yeniden değerlendirir. Ölçeklendirme yalnızca ortalama CPU kullanımı %30'un altında olduğunda gerçekleşir.
Kanat çırpma işlemi genellikle aşağıdaki nedenden kaynaklanır:
- Eşikler arasındaki küçük veya hiç kenar boşluğu yok
- Birden fazla örnekle ölçeklendirme
- Farklı ölçümler kullanarak ölçeği daraltma ve genişletme
Eşikler arasındaki küçük veya hiç kenar boşluğu yok
Çırpmayı önlemek için ölçeklendirme eşikleri arasında yeterli kenar boşluklarını tutun.
Örneğin, eşikler arasında kenar boşluğu olmayan aşağıdaki kurallar, kanat çırpma neden olur.
- İş parçacığı sayısı >=600 olduğunda ölçeği genişletme
- İş parçacığı sayısı < 600 olduğunda ölçeği daraltma
Aşağıdaki tabloda bu otomatik ölçeklendirme kurallarının olası bir sonucu gösterilmektedir:
Saat | Örnek sayısı | Ilmekli | Örnek başına iş parçacığı sayısı | Olayı ölçeklendirme | Sonuçta elde edilen örnek sayısı |
---|---|---|---|---|---|
T0 | 2 | 1250 | 625 | Ölçeği genişletme | 3 |
T1 | 3 | 1250 | 417 | Ölçeği daraltma | 2 |
- T0 zamanında 1250 iş parçacığını veya örnek başına 625 basamakları işleyen iki örnek vardır. Otomatik ölçeklendirme ölçeğini üç örneğe genişletebilir.
- Ölçeği genişleterek, T1'de aynı 1250 iş parçacığına sahibiz, ancak üç örneğimiz var ve örnek başına yalnızca 417 iş parçacığı var. Ölçeği daraltma olayı tetiklenir.
- Ölçeklendirmeden önce, ölçeklendirme olayı gerçekleşirse otomatik ölçeklendirme ne olacağını değerlendirir. Bu örnekte, örnek başına 1250 / 2 = 625, yani 625 iş parçacığı. Otomatik ölçeklendirmenin ölçeği daraltıldıktan sonra ölçeği hemen yeniden genişletmesi gerekir. Ölçeği yeniden genişletirse işlem yinelenir ve bu da döngüye neden olur.
- Bu durumu önlemek için otomatik ölçeklendirme ölçeği daraltmaz. Otomatik ölçeklendirme geçerli ölçek olayını atlar ve sonraki yürütme döngüsünde kuralı yeniden değerlendirir.
Bu durumda, hiçbir ölçek olayı gerçekleşmediğinden otomatik ölçeklendirme çalışmıyor gibi görünüyor. Otomatik ölçeklendirme ayarı sayfasındaki Çalıştırma geçmişi sekmesini gözden geçirin ve herhangi bir dokunma olup olmadığını denetleyin.
Eşikler arasında yeterli bir kenar boşluğu ayarlamak yukarıdaki senaryoyu önler. Örneğin,
- İş parçacığı sayısı >=600 olduğunda ölçeği genişletme
- İş parçacığı sayısı < 400 olduğunda ölçeği daraltma
Ölçeklendirilen iş parçacığı sayısı 400 ise, ölçek olayının gerçekleşmesi için toplam iş parçacığı sayısının 1200'in altına düşmesi gerekir. Aşağıdaki tabloya bakın.
Saat | Örnek sayısı | Ilmekli | Örnek başına iş parçacığı sayısı | Olayı ölçeklendirme | Sonuçta elde edilen örnek sayısı |
---|---|---|---|---|---|
T0 | 2 | 1250 | 625 | Ölçeği genişletme | 3 |
T1 | 3 | 1250 | 417 | ölçek olayı yok | 3 |
T2 | 3 | 1180 | 394 | ölçeği daraltma | 2 |
T3 | 3 | 1180 | 590 | ölçek olayı yok | 2 |
Birden fazla örnekle ölçeklendirme
Ölçeği birden fazla örnekle daraltırken veya genişletirken çırpılmasını önlemek için, otomatik ölçeklendirme kuralda belirtilen örnek sayısından daha az ölçeklendirilebilir.
Örneğin, aşağıdaki kurallar çırpmalara neden olabilir:
- İstek sayısı >örnek başına =200 olduğunda ölçeği 20'ye kadar genişletme.
- VEYA örnek başına %70 CPU > olduğunda.
- İstek sayısı <örnek başına =50 olduğunda ölçeği 10 olarak daraltın.
Aşağıdaki tabloda bu otomatik ölçeklendirme kurallarının olası bir sonucu gösterilmektedir:
Saat | Örnek sayısı | CPU | İstek sayısı | Olayı ölçeklendirme | Sonuçta elde edilen örnekler | Açıklamalar |
---|---|---|---|---|---|---|
T0 | 30 | %65 | Örnek başına 3000 veya 100. | Ölçek olayı yok | 30 | |
T1 | 30 | 65 | 1500 | Ölçeği 3 örneğe göre daraltma | 27 | Ölçeğin 10'a kadar genişletilmesi, tahmini CPU'ların %70'in üzerine çıkmasına neden olur ve ölçeği genişletme olayına neden olur. |
T0 zamanında uygulama 30 örnek, toplam istek sayısı 3000 ve örnek başına %65 CPU kullanımı ile çalışır.
T1'de, istek sayısı 1500 isteğe veya örnek başına 50 isteğe düştüğünde, otomatik ölçeklendirme 10 örnekle 20'ye ölçeklendirilmeye çalışır. Ancak otomatik ölçeklendirme, 20 örnek için CPU yükünün %70'in üzerinde olacağını tahmin eder ve bu da ölçeği genişletme olayına neden olur.
Otomatik ölçeklendirme altyapısı, tüm ölçümlerin tanımlı eşiklerde yer aldığı bir örnek sayısı bulana kadar 20'nin üzerindeki örnek sayıları için CPU kullanımını tahmin eder:
- CPU'yu %70'in altında tutun.
- Örnek başına istek sayısını 50'nin üzerinde tutun.
- Örnek sayısını 30'un altına düşürün.
Bu durumda, kural 10'lık bir azalma belirtse bile, kuralları karşılamak için otomatik ölçeklendirme 30'dan 27 örneğe kadar ölçeklendirilebilir. Etkinlik günlüğüne ölçeği azaltmayı içeren bir açıklama içeren bir günlük iletisi yazılır ve bu iletinin kaydırılmasını önlemek için güncelleştirilmiş örnek sayısıyla birlikte gerçekleşir
Otomatik ölçeklendirme uygun sayıda örneği bulamazsa, olay ölçeğini atlar ve sonraki döngüde yeniden değerlendirir.
Not
Otomatik ölçeklendirme altyapısı, hedef örnek sayısına ölçeklendirmenin bir sonucu olarak dokunmanın gerçekleşebileceğini algılarsa, geçerli sayı ile hedef sayı arasında daha düşük sayıda örneğe ölçeklendirmeyi de dener. Bu aralık içinde kanat çırpma gerçekleşmezse, otomatik ölçeklendirme yeni hedefle ölçeklendirme işlemine devam eder.
Günlük dosyaları
Etkinlik günlüğünde aşağıdaki sorguyla dokunmayı bulun:
// 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
Aşağıda, dokunma için etkinlik günlüğü kaydı örneği verilmiştir:
{
"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"
}
Sonraki adımlar
Otomatik ölçeklendirme hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın: