Bagikan melalui


Flapping dalam Skala Otomatis

Artikel ini menjelaskan flapping dalam skala otomatis dan cara menghindarinya.

Flapping mengacu pada kondisi perulangan yang menyebabkan serangkaian peristiwa skala yang berlawanan. Flapping terjadi ketika peristiwa skala memicu peristiwa skala yang berlawanan.

Skala otomatis mengevaluasi tindakan penyempitan skala yang tertunda untuk melihat apakah tindakan tersebut akan menyebabkan flapping. Dalam kasus di mana flapping dapat terjadi, skala otomatis dapat melewati tindakan skala dan mengevaluasi ulang pada eksekusi berikutnya, atau skala otomatis dapat diskalakan kurang dari jumlah instans sumber daya yang ditentukan. Proses evaluasi skala otomatis terjadi setiap kali mesin skala otomatis berjalan, yaitu setiap 30 hingga 60 detik, bergantung pada jenis sumber daya.

Untuk memastikan sumber daya yang memadai, memeriksa potensi flapping tidak terjadi untuk peristiwa peluasan skala. Skala otomatis hanya akan menunda peristiwa penyempitan skala untuk menghindari flapping.

Misalnya, mari kita asumsikan aturan berikut:

  • Peluasan skala meningkat 1 instans ketika penggunaan CPU rata-rata di atas 50%.
  • Penyempitan skala mengurangi jumlah instans sebesar 1 instans ketika penggunaan CPU rata-rata lebih rendah dari 30%.

Dalam tabel di bawah ini pada T0, ketika penggunaan berada di 56%, tindakan peluasan skala dipicu dan menghasilkan penggunaan CPU 56% di 2 instans. Hal tersebut memberikan rata-rata 28% untuk set skala. Karena 28% kurang dari ambang penyempitan skala, skala otomatis harus menskalakan kembali. Penyempitan skala akan mengembalikan skala yang diatur ke penggunaan CPU 56%, yang memicu tindakan peluasan skala.

Waktu Jumlah instans CPU% CPU% per instans Peristiwa skala Jumlah instans yang dihasilkan
T0 1 56% 56% Peluasan skala 2
T1 2 56% 28% Skala masuk 1
T2 1 56% 56% Peluasan skala 2
T3 2 56% 28% Skala masuk 1

Jika dibiarkan tidak terkendali, akan ada serangkaian peristiwa skala yang berlangsung. Namun, dalam situasi ini, mesin skala otomatis akan menunda peristiwa penyempitan skala pada T1 dan mengevaluasi ulang selama eksekusi skala otomatis berikutnya. Penyempitan skala hanya akan terjadi setelah penggunaan CPU rata-rata di bawah 30%.

Flapping sering disebabkan oleh:

  • Margin kecil atau tidak ada di antara ambang
  • Menskalakan lebih dari satu instans
  • Menskalakan masuk dan keluar menggunakan metrik yang berbeda

Margin kecil atau tidak ada di antara ambang

Untuk menghindari flapping, pertahankan margin yang memadai di antara ambang penskalaan.

Misalnya, aturan berikut di mana tidak ada margin di antara ambang, menyebabkan flapping.

  • Meluaskan skala jika jumlah rangkaian >=600
  • Menyempitkan skala jika jumlah rangkaian < 600

Cuplikan layar yang menampilkan aturan penskalaan otomatis dengan peluasan skala ketika jumlah rangkaian lebih besar dari atau setara dengan 600 dan penyempitan skala ketika jumlah rangkaian kurang dari 600.

Tabel di bawah ini menampilkan potensi hasil dari aturan skala otomatis ini:

Waktu Jumlah instans Jumlah rangkaian Jumlah rangkaian per instans Peristiwa skala Jumlah instans yang dihasilkan
T0 2 1250 625 Peluasan skala 3
T1 3 1250 417 Skala masuk 2
  • Pada saat T0, ada dua instans yang menangani 1250 rangkaian, atau 625 rangkaian per instans. Skala otomatis diskalakan ke tiga instans.
  • Setelah peluasan skala, pada T1, kami memiliki 1250 rangkaian yang sama, tetapi dengan tiga instans, hanya 417 rangkaian per instans. Peristiwa penyempitan skala dipicu.
  • Sebelum penyempitan skala, skala otomatis mengevaluasi apa yang akan terjadi jika peristiwa penyempitan skala berlangsung. Dalam contoh ini, 1250 / 2 = 625, yaitu, 625 rangkaian per instans. Skala otomatis harus segera meluaskan kembali skala setelah menyempitkan skala. Jika skalanya diluaskan lagi, proses akan berulang, yang menimbulkan perulangan flapping.
  • Untuk menghindari situasi ini, penskalaan otomatis tidak menyempitkan skala. Skala otomatis melewati peristiwa skala saat ini dan mengevaluasi ulang aturan dalam siklus eksekusi berikutnya.

Dalam hal ini, sepertinya skala otomatis tidak berfungsi karena tidak ada peristiwa skala yang terjadi. Periksa tab Riwayat eksekusi pada halaman pengaturan skala otomatis untuk melihat apakah ada flapping.

Cuplikan layar yang menampilkan tab riwayat eksekusi skala otomatis dengan rekaman yang menampilkan flapping.

Mengatur margin yang memadai di antara ambang akan menghindari skenario di atas. Contohnya,

  • Meluaskan skala jika jumlah rangkaian >=600
  • Menyempitkan skala jika jumlah rangkaian < 400

Cuplikan layar yang menampilkan aturan penskalaan otomatis dengan peluasan skala jika jumlah rangkaian lebih besar atau setara dengan 600 dan penyempitan skala jika jumlah rangkaian kurang dari 400.

Jika jumlah rangkaian penyempitan skala adalah 400, jumlah total rangkaian harus turun di bawah 1200 sebelum peristiwa skala akan terjadi. Lihat tabel di bawah.

Waktu Jumlah instans Jumlah rangkaian Jumlah rangkaian per instans Peristiwa skala Jumlah instans yang dihasilkan
T0 2 1250 625 Peluasan skala 3
T1 3 1250 417 tidak ada peristiwa skala 3
T2 3 1180 394 penyempitan skala 2
T3 3 1180 590 tidak ada peristiwa skala 2

Menskalakan lebih dari satu instans

Untuk menghindari flapping saat meluaskan atau menyempitkan skala lebih dari satu instans, skala otomatis dapat diskalakan kurang dari jumlah instans yang ditentukan dalam aturan.

Misalnya, aturan berikut dapat menyebabkan flapping:

  • Luaskan skala sebesar 20 jika jumlah permintaan >=200 per instans.
  • ATAU ketika CPU > 70% per instans.
  • Sempitkan skala sebesar 10 saat jumlah permintaan <=50 per instans.

Cuplikan layar yang menampilkan kondisi skala default skala otomatis dengan aturan yang dikonfigurasi untuk contoh.

Tabel di bawah ini menampilkan potensi hasil dari aturan skala otomatis ini:

Waktu Jumlah instans CPU Jumlah permintaan Peristiwa skala Instans yang dihasilkan Komentar
T0 30 65% 3000, atau 100 per instans. Tidak ada peristiwa skala 30
T1 30 65 1500 Menyempitkan skala sebesar 3 instans 27 Penyempitan skala sebesar 10 akan menyebabkan perkiraan kenaikan CPU di atas 70%, yang menimbulkan peristiwa peluasan skala.

Pada saat T0, aplikasi berjalan dengan 30 instans, jumlah permintaan total 3000, dan penggunaan CPU 65% per instans.

Pada T1, ketika jumlah permintaan turun menjadi 1500, atau 50 permintaan per instans, skala otomatis akan mencoba menyempitkan skala dari 10 menjadi 20 instans. Namun, skala otomatis memperkirakan bahwa beban CPU untuk 20 instans akan di atas 70%, menyebabkan peristiwa peluasan skala.

Untuk menghindari flapping, mesin skala otomatis memperkirakan penggunaan CPU untuk jumlah instans di atas 20 hingga menemukan jumlah instans di mana semua metrik berada di ambang yang ditentukan:

  • Pertahankan CPU di bawah 70%.
  • Pertahankan jumlah permintaan per instans di atas 50.
  • Kurangi jumlah instans di bawah 30.

Dalam situasi ini, skala otomatis dapat menyempitkan skala sebesar 3, dari 30 menjadi 27 instans untuk memenuhi aturan, meskipun aturan menentukan penurunan 10. Pesan log ditulis ke log aktivitas dengan deskripsi yang menyertakan Penurunan skala akan terjadi dengan jumlah instans yang diperbarui untuk menghindari flapping

Jika skala otomatis tidak dapat menemukan jumlah instans yang sesuai, skala tersebut akan melewati peristiwa penyempitan skala dan mengevaluasi ulang selama siklus berikutnya.

Catatan

Jika mesin skala otomatis mendeteksi flapping dapat terjadi sebagai akibat dari penskalaan ke jumlah target instans, mesin tersebut juga akan mencoba menskalakan ke jumlah instans yang lebih rendah antara jumlah saat ini dan jumlah target. Jika flapping tidak terjadi dalam rentang ini, skala otomatis akan melanjutkan operasi penskalaan dengan target baru.

File log

Temukan flapping di log aktivitas dengan kueri berikut:

// 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 

Di bawah ini adalah contoh rekaman log aktivitas untuk flapping:

Cuplikan layar yang menampilkan rekaman log dari peristiwa flapping.

{
"eventCategory": "Autoscale",
"eventName": "FlappingOccurred",
"operationId": "ffd31c67-1438-47a5-bee4-1e3a102cf1c2",
"eventProperties": 
    "{"Description":"Scale down will occur with updated instance count to avoid flapping. 
     Resource: '/subscriptions/d1234567-9876-a1b2-a2b1-123a567b9f8767/  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/d1234567-9876-a1b2-a2b1-123a567b9f8767/resourcegroups/ed-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/d1234567-9876-a1b2-a2b1-123a567b9f8767/resourceGroups/ed-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/d1234567-9876-a1b2-a2b1-123a567b9f8767/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/d1234567-9876-a1b2-a2b1-123a567b9f8767/resourceGroups/ed-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/d1234567-9876-a1b2-a2b1-123a567b9f8767/resourceGroups/ed-rg-001/providers/Microsoft.Web/sites/ScaleableWebApp1","MetricType":"MDM","Dimensions":[],"DividePerInstance":true},"ScaleAction":{"Direction":"Decrease","Type":"ChangeCount","Value":"5","Cooldown":"PT1M"}}]}}",
"eventDataId": "b23ae911-55d0-4881-8684-fc74227b2ddb",
"eventSubmissionTimestamp": "2022-09-13T07:20:41.1589076Z",
"resource": "scaleableappserviceplan",
"resourceGroup": "ED-RG-001",
"resourceProviderValue": "MICROSOFT.WEB",
"subscriptionId": "D1234567-9876-A1B2-A2B1-123A567B9F876",
"activityStatusValue": "Succeeded"
}

Langkah berikutnya

Untuk mempelajari selengkapnya tentang skala otomatis, lihat sumber daya berikut: