Uppdatera meddelandefunktionsenheter i ett namnområde för Azure Service Bus automatiskt

Med autoskalning kan du ha rätt mängd resurser som körs för att hantera belastningen på ditt program. Det gör att du kan lägga till resurser för att hantera belastningsökningar och även spara pengar genom att ta bort resurser som är inaktiva. Mer information om autoskalningsfunktionen i Azure Monitor finns i Översikt över autoskalning i Microsoft Azure .

Service Bus Premium-meddelanden ger resursisolering på processor- och minnesnivån så att varje kunds arbetsbelastning körs i isolering. Den här resurscontainern kallas för en meddelandeenhet. Mer information om meddelandeenheter finns i Service Bus Premium Messaging.

Genom att använda autoskalningsfunktionen för Service Bus Premium-namnområden kan du ange ett lägsta och högsta antal meddelandeenheter och lägga till eller ta bort meddelandeenheter automatiskt baserat på en uppsättning regler.

Du kan till exempel implementera följande skalningsscenarier för Service Bus-namnområden med hjälp av funktionen Autoskalning.

  • Öka meddelandeenheterna för ett Service Bus-namnområde när processoranvändningen för namnområdet överstiger 75 %.
  • Minska meddelandeenheterna för ett Service Bus-namnområde när processoranvändningen för namnområdet understiger 25 %.
  • Använd fler meddelandeenheter under kontorstid och färre när de inte används.

Den här artikeln visar hur du automatiskt kan skala ett Service Bus-namnområde (uppdatera meddelandeenheter) med hjälp av mallen Azure Portal och en Azure Resource Manager.

Viktigt

Den här artikeln gäller endast premiumnivån för Azure Service Bus.

Konfigurera med hjälp av Azure-portalen

I det här avsnittet får du lära dig hur du använder Azure Portal för att konfigurera automatisk skalning av meddelandeenheter för ett Service Bus-namnområde.

Inställningssida för autoskalning

Följ först de här stegen för att gå till sidan Autoskalningsinställningar för Service Bus-namnområdet.

  1. Logga in på Azure-portalen.

  2. I sökfältet skriver du Service Bus, väljer Service Bus i listrutan och trycker på RETUR.

  3. Välj ditt premiumnamnområde i listan över namnområden.

  4. Växla till sidan Skala .

    Service Bus-namnområde – skalningssida

Manuell skalning

Med den här inställningen kan du ange ett fast antal meddelandeenheter för namnområdet.

  1. På sidan Autoskalningsinställning väljer du Manuell skalning om den inte redan är markerad.

  2. För Inställningen Meddelandeenheter väljer du antalet meddelandeenheter i listrutan.

  3. Spara inställningen genom att välja Spara i verktygsfältet.

    Skala meddelandeenheter manuellt

Anpassad autoskalning – standardvillkor

Du kan konfigurera automatisk skalning av meddelandeenheter med hjälp av villkor. Det här skalningsvillkoret körs när inget av de andra skalningsvillkoren matchar. Du kan ange standardvillkoret på något av följande sätt:

  • Skala baserat på ett mått (till exempel CPU- eller minnesanvändning)
  • Skala till ett specifikt antal meddelandeenheter

Du kan inte ange ett schema för automatisk skalning för ett visst dagar eller datumintervall för ett standardvillkor. Det här skalningsvillkoret körs när inget av de andra skalningsvillkoren med scheman matchar.

Anteckning

För att förbättra dataflödet för mottagning behåller Service Bus vissa meddelanden i cacheminnet. Service Bus rensar endast cachen när minnesanvändningen överskrider ett visst högt tröskelvärde, till exempel 90 %. Så om en entitet skickar meddelanden men inte tar emot dem cachelagras dessa meddelanden och återspeglas i ökad minnesanvändning. Det finns inget att oroa sig för eftersom Service Bus trimmar cachen vid behov, vilket så småningom gör att minnesanvändningen går ned. Minnet orsakar inga problem om det inte finns prestanda eller andra problem med namnområdet. Vi rekommenderar att du använder måttet CPU-användning för autoskalning med Service Bus.

Skala baserat på ett mått

Följande procedur visar hur du lägger till ett villkor för att automatiskt öka meddelandeenheter (skala ut) när CPU-användningen är större än 75 % och minska meddelandeenheter (skala in) när CPU-användningen är mindre än 25 %. Ökningar görs från 1 till 2, 2 till 4, 4 till 8 och 8 till 16. På samma sätt görs minskningar från 16 till 8, 8 till 4, 4 till 2 och 2 till 1.

  1. På sidan Autoskalningsinställning väljer du Anpassad automatisk skalning för alternativet Välj hur du skalar din resurs .

  2. I avsnittet Standard på sidan anger du ett namn för standardvillkoret. Välj pennikonen för att redigera texten.

  3. Välj Skala baserat på ett mått för skalningsläge.

  4. Välj + Lägg till en regel.

    Standard – skala baserat på ett mått

  5. Följ dessa steg på sidan Skalningsregel :

    1. Välj ett mått i listrutan Måttnamn . I det här exemplet är det CPU.

    2. Välj en operator och tröskelvärden. I det här exemplet är de större än och 75 för tröskelvärdet för mått för att utlösa skalningsåtgärden.

    3. Välj en åtgärd i avsnittet Åtgärd . I det här exemplet är det inställt på Öka.

    4. Välj sedan Lägg till

      Standard – skala ut om CPU-användningen är större än 75 %

      Anteckning

      Autoskalningsfunktionen ökar meddelandeenheterna för namnområdet om den totala CPU-användningen överstiger 75 % i det här exemplet. Ökningar görs från 1 till 2, 2 till 4, 4 till 8 och 8 till 16.

  6. Välj + Lägg till en regel igen och följ dessa steg på sidan Skalningsregel :

    1. Välj ett mått i listrutan Måttnamn . I det här exemplet är det CPU.

    2. Välj en operator och tröskelvärden. I det här exemplet är de mindre än och 25 för tröskelvärdet för mått för att utlösa skalningsåtgärden.

    3. Välj en åtgärd i avsnittet Åtgärd . I det här exemplet är det inställt på Minska.

    4. Välj sedan Lägg till

      Standard – skala in om CPU-användningen är mindre än 25 %

      Anteckning

      Autoskalningsfunktionen minskar meddelandeenheterna för namnområdet om den totala CPU-användningen understiger 25 % i det här exemplet. Minskningar görs från 16 till 8, 8 till 4, 4 till 2 och 2 till 1.

  7. Ange det lägsta och högsta och standardantalet meddelandeenheter.

    Standardregel baserad på ett mått

  8. Välj Spara i verktygsfältet för att spara autoskalningsinställningen.

Skala till ett specifikt antal meddelandeenheter

Följ de här stegen för att konfigurera regeln för att skala namnområdet så att det använder ett specifikt antal meddelandeenheter. Återigen tillämpas standardvillkoret när inget av de andra skalningsvillkoren matchar.

  1. På sidan Autoskalningsinställning väljer du Anpassad automatisk skalning för alternativet Välj hur du skalar din resurs .

  2. I avsnittet Standard på sidan anger du ett namn för standardvillkoret.

  3. Välj Skala till specifika meddelandeenheter för skalningsläge.

  4. För Meddelandeenheter väljer du antalet standardenheter för meddelanden.

    Standard – skala till specifika meddelandeenheter

Anpassad autoskalning – ytterligare villkor

I föregående avsnitt visas hur du lägger till ett standardvillkor för autoskalningsinställningen. Det här avsnittet visar hur du lägger till fler villkor i autoskalningsinställningen. För dessa ytterligare icke-standardvillkor kan du ange ett schema baserat på specifika dagar i veckan eller ett datumintervall.

Skala baserat på ett mått

  1. På sidan Autoskalningsinställning väljer du Anpassad automatisk skalning för alternativet Välj hur du skalar din resurs .

  2. Välj Lägg till ett skalningsvillkor under standardblocket .

    Anpassad – lägg till en länk för skalningsvillkor

  3. Ange ett namn för villkoret.

  4. Bekräfta att alternativet Skala baserat på ett mått har valts.

  5. Välj + Lägg till en regel för att lägga till en regel för att öka meddelandeenheterna när den totala CPU-användningen överstiger 75 %. Följ stegen i standardvillkorsavsnittet .

  6. Ange det lägsta och högsta och standardantalet meddelandeenheter.

  7. Du kan också ange ett schema för ett anpassat villkor (men inte på standardvillkoret). Du kan antingen ange start- och slutdatum för villkoret (eller) välja specifika dagar (måndag, tisdag och så vidare.) för en vecka.

    1. Om du väljer Ange start-/slutdatum väljer du Tidszon, Startdatum och starttid samt Slutdatum och tid (som visas i följande bild) för att villkoret ska gälla.

      Lägsta, högsta och standardvärden för antal meddelandeenheter

    2. Om du väljer Upprepa specifika dagar väljer du veckodagar, tidszon, starttid och sluttid när villkoret ska gälla.

      Upprepa specifika dagar

Skala till ett specifikt antal meddelandeenheter

  1. På sidan Autoskalningsinställning väljer du Anpassad automatisk skalning för alternativet Välj hur du skalar din resurs .

  2. Välj Lägg till ett skalningsvillkor under standardblocket .

    Anpassad – lägg till en länk för skalningsvillkor

  3. Ange ett namn för villkoret.

  4. Välj alternativet Skala till specifika meddelandeenheter för skalningsläge.

  5. Välj antalet meddelandeenheter i listrutan.

  6. För schemat anger du antingen start- och slutdatum för villkoret (eller) väljer specifika dagar (måndag, tisdag och så vidare.) för en vecka och tider.

    1. Om du väljer Ange start-/slutdatum väljer du Tidszon, Startdatum och starttid samt Slutdatum och tid för villkoret som ska gälla.

    skala till specifika meddelandeenheter – start- och slutdatum

    1. Om du väljer Upprepa specifika dagar väljer du veckodagar, tidszon, starttid och sluttid när villkoret ska gälla.

    skala till specifika meddelandeenheter – upprepa specifika dagar

    Mer information om hur autoskalningsinställningar fungerar, särskilt hur de väljer en profil eller ett villkor och utvärderar flera regler, finns i Förstå inställningar för autoskalning.

    Anteckning

    • Måtten som du granskar för att fatta beslut om autoskalning kan vara 5–10 minuter gamla. När du hanterar höga arbetsbelastningar rekommenderar vi att du har kortare varaktigheter för att skala upp och längre varaktigheter för nedskalning (> 10 minuter) för att säkerställa att det finns tillräckligt med meddelandeenheter för att bearbeta högbelastningar.

    • Om du ser fel på grund av kapacitetsbrist (inga tillgängliga meddelandeenheter) skapar du ett supportärende hos oss.

Körningshistorik

Växla till fliken Körningshistorik på sidan Skala för att se ett diagram som visar antalet meddelandeenheter som observerats av autoskalningsmotorn. Om diagrammet är tomt innebär det antingen att autoskalning inte har konfigurerats eller konfigurerats men inaktiverats eller befinner sig i en nedkylningsperiod.

Skärmbild som visar **Körningshistorik** på sidan **Skala**.

Meddelanden

Växla till fliken Meddela på sidan Skala för att:

  • Aktivera sändning av e-postmeddelanden till administratörer, medadministratörer och eventuella ytterligare administratörer.

  • Aktivera sändning av e-postmeddelanden till en HTTP- eller HTTPS-slutpunkt som exponeras av webhooks.

    Skärmbild som visar fliken **Meddela** på sidan **Skala**.

Konfigurera med hjälp av en Resource Manager mall

Du kan använda följande exempel Resource Manager mall för att skapa ett Service Bus-namnområde med en kö och för att konfigurera autoskalningsinställningar för namnområdet. I det här exemplet anges två skalningsvillkor.

  • Standardskalningsvillkor: Öka meddelandeenheterna när den genomsnittliga CPU-användningen överstiger 75 % och minska meddelandeenheterna när den genomsnittliga CPU-användningen understiger 25 %.
  • Tilldela två meddelandeenheter till namnområdet på helgerna.

Mall

{
	"$schema": "https: //schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
	"contentVersion": "1.0.0.0",
	"parameters": {
		"serviceBusNamespaceName": {
			"type": "String",
			"metadata": {
				"description": "Name of the Service Bus namespace"
			}
		},
		"serviceBusQueueName": {
			"type": "String",
			"metadata": {
				"description": "Name of the Queue"
			}
		},
		"autoScaleSettingName": {
			"type": "String",
			"metadata": {
				"description": "Name of the auto scale setting."
			}
		},
		"location": {
			"defaultValue": "[resourceGroup().location]",
			"type": "String",
			"metadata": {
				"description": "Location for all resources."
			}
		}
	},
	"resources": [{
			"type": "Microsoft.ServiceBus/namespaces",
			"apiVersion": "2021-11-01",
			"name": "[parameters('serviceBusNamespaceName')]",
			"location": "[parameters('location')]",
			"sku": {
				"name": "Premium"
			},
			"properties": {}
		},
		{
			"type": "Microsoft.ServiceBus/namespaces/queues",
			"apiVersion": "2021-11-01",
			"name": "[format('{0}/{1}', parameters('serviceBusNamespaceName'), parameters('serviceBusQueueName'))]",
			"dependsOn": [
				"[resourceId('Microsoft.ServiceBus/namespaces', parameters('serviceBusNamespaceName'))]"
			],
			"properties": {
				"lockDuration": "PT5M",
				"maxSizeInMegabytes": 1024,
				"requiresDuplicateDetection": false,
				"requiresSession": false,
				"defaultMessageTimeToLive": "P10675199DT2H48M5.4775807S",
				"deadLetteringOnMessageExpiration": false,
				"duplicateDetectionHistoryTimeWindow": "PT10M",
				"maxDeliveryCount": 10,
				"autoDeleteOnIdle": "P10675199DT2H48M5.4775807S",
				"enablePartitioning": false,
				"enableExpress": false
			}
		},
		{
			"type": "Microsoft.Insights/autoscaleSettings",
			"apiVersion": "2021-05-01-preview",
			"name": "[parameters('autoScaleSettingName')]",
			"location": "East US",
			"dependsOn": [
				"[resourceId('Microsoft.ServiceBus/namespaces', parameters('serviceBusNamespaceName'))]"
			],
			"tags": {},
			"properties": {
				"name": "[parameters('autoScaleSettingName')]",
				"enabled": true,
				"predictiveAutoscalePolicy": {
					"scaleMode": "Disabled",
					"scaleLookAheadTime": null
				},
				"targetResourceUri": "[resourceId('Microsoft.ServiceBus/namespaces', parameters('serviceBusNamespaceName'))]",
				"profiles": [{
						"name": "Increase messaging units to 2 on weekends",
						"capacity": {
							"minimum": "2",
							"maximum": "2",
							"default": "2"
						},
						"rules": [],
						"recurrence": {
							"frequency": "Week",
							"schedule": {
								"timeZone": "Eastern Standard Time",
								"days": [
									"Saturday",
									"Sunday"
								],
								"hours": [
									6
								],
								"minutes": [
									0
								]
							}
						}
					},
					{
						"name": "{\"name\":\"Scale Out at 75% CPU and Scale In at 25% CPU\",\"for\":\"Increase messaging units to 4 on weekends\"}",
						"capacity": {
							"minimum": "1",
							"maximum": "8",
							"default": "2"
						},
						"rules": [{
								"scaleAction": {
									"direction": "Increase",
									"type": "ServiceAllowedNextValue",
									"value": "1",
									"cooldown": "PT5M"
								},
								"metricTrigger": {
									"metricName": "NamespaceCpuUsage",
									"metricNamespace": "microsoft.servicebus/namespaces",
									"metricResourceUri": "[resourceId('Microsoft.ServiceBus/namespaces', parameters('serviceBusNamespaceName'))]",
									"operator": "GreaterThan",
									"statistic": "Average",
									"threshold": 75,
									"timeAggregation": "Average",
									"timeGrain": "PT1M",
									"timeWindow": "PT10M",
									"Dimensions": [],
									"dividePerInstance": false
								}
							},
							{
								"scaleAction": {
									"direction": "Decrease",
									"type": "ServiceAllowedNextValue",
									"value": "1",
									"cooldown": "PT5M"
								},
								"metricTrigger": {
									"metricName": "NamespaceCpuUsage",
									"metricNamespace": "microsoft.servicebus/namespaces",
									"metricResourceUri": "[resourceId('Microsoft.ServiceBus/namespaces', parameters('serviceBusNamespaceName'))]",
									"operator": "LessThan",
									"statistic": "Average",
									"threshold": 25,
									"timeAggregation": "Average",
									"timeGrain": "PT1M",
									"timeWindow": "PT10M",
									"Dimensions": [],
									"dividePerInstance": false
								}
							}
						],
						"recurrence": {
							"frequency": "Week",
							"schedule": {
								"timeZone": "Eastern Standard Time",
								"days": [
									"Saturday",
									"Sunday"
								],
								"hours": [
									18
								],
								"minutes": [
									0
								]
							}
						}
					}
				],
				"notifications": [],
				"targetResourceLocation": "East US"
			}
		}
	]
}

Du kan också generera ett JSON-exempel för en resurs för autoskalningsinställning från Azure Portal. När du har konfigurerat inställningar för autoskalning i Azure Portal väljer du JSON i kommandofältet på sidan Skala.

Bild som visar valet av JSON-knappen i kommandofältet på sidan **Skala** i Azure Portal.

Ta sedan med JSON i avsnittet i resources en Resource Manager mall enligt föregående exempel.

Annat som är bra att tänka på

När du använder alternativet Anpassad autoskalning med standardvillkoret eller standardprofilen ökas meddelandeenheterna (1 –> 2 –> 4 –> 8 –> 16) eller minskas (16 –> 8 –> 4 –> 2 –> 1) gradvis.

När du skapar ytterligare villkor kan det hända att meddelandeenheterna inte ökas eller minskas gradvis. Anta att du har två profiler som definierats enligt följande exempel. Vid 06:00 UTC är meddelandeenheterna inställda på 16 och kl. 21:00 UTC minskas de till 1.

{

	"Profiles": [
		{
			"Name": "standardProfile",
			"Capacity": {
				"Minimum": "16",
				"Maximum": "16",
				"Default": "16"
			},
			"Rules": [],
			"Recurrence": {
				"Frequency": "Week",
				"Schedule": {
					"TimeZone": "UTC",
					"Days": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"
					],
					"Hours": [6],
					"Minutes": [0]
				}
			}
		},
		{
			"Name": "outOfHoursProfile",
			"Capacity": {
				"Minimum": "1",
				"Maximum": "1",
				"Default": "1"
			},
			"Rules": [],
			"Recurrence": {
				"Frequency": "Week",
				"Schedule": {
					"TimeZone": "UTC",
					"Days": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
					"Hours": [21],
					"Minutes": [0]
				}
			}
		}
	]
}

Vi rekommenderar att du skapar regler som gör att meddelandeenheterna ökar eller minskar gradvis.

Nästa steg

Mer information om meddelandeenheter finns i Premium-meddelanden