Aracılığıyla paylaş


Azure Resource Manager'ın istekleri nasıl kısıtladığını anlama

Bu makalede Azure Resource Manager'ın istekleri nasıl kısıtlediği açıklanmaktadır. Sınıra ulaşmadan önce kalan istek sayısını izleme ve sınıra ulaştığınızda nasıl yanıt vereceğiniz gösterilir.

Bölgesel hız sınırlaması ve belirteç demeti algoritması

Microsoft, Azure aboneliklerini 2024 itibarıyla güncellenmiş bir sınırlama mimarisine geçirmiştir. Azaltma sınırları artık Azure Resource Manager örneği yerine bölge başına uygulanır. Bu yeni mimari, API kısıtlamasını yönetmek için token bucket algoritması kullanır.

Jeton kovası, her saniye için gönderebileceğiniz en fazla istek sayısını temsil eder. İstek sayısı üst sınırına ulaştığınızda, yeniden doldurma oranı jetonların kovada ne kadar hızlı kullanılabilir hale geldiğini belirler.

Bu güncelleştirilmiş sınırlar, kotanızı yenilemenizi ve yönetmenizi kolaylaştırır.

Genel ve bağımsız bulutlar için güncelleştirilmiş sınırlar şunlardır:

Kapsam Operasyonlar Demet boyutu Saniye başına yeniden doldurma oranı
Abonelik okur 250 Yirmi beş
Abonelik silme 200 10
Abonelik yazar 200 10
Kiracı okuyucu 250 Yirmi beş
Kiracı silme 200 10
Kiracı yazar 200 10

Abonelik sınırları abonelik başına, hizmet sorumlusuna ve işlem türüne göre uygulanır. Ayrıca, her işlem türü için tek tek hizmet sorumlusu sınırlarının 15 katıyla eşdeğer olan genel abonelik sınırları da vardır. Genel sınırlar tüm hizmet sorumluları için geçerlidir. Genel, hizmet ilkesi veya kiracıya özgü sınırlar aşılırsa istekler sınırlı hale getirilir.

Ücretsiz veya deneme amaçlı müşteriler için sınırlar daha küçük olabilir.

Örneğin, okuma istekleri için demet boyutunun 250 belirteç olduğunu ve saniyede 25 belirteç yeniden doldurma oranına sahip olduğunuzu varsayalım. Saniye içinde 250 okuma isteği gönderirseniz demet boş olur ve istekleriniz kısıtlanır. Demet en fazla 250 belirteç kapasitesine ulaşana kadar her saniye 25 belirteç kullanılabilir hale gelir. Belirteçleri kullanılabilir hale geldikçe kullanabilirsiniz.

API kullanarak */providers/microsoft.insights/metrics ölçümleri okumak, genel Azure Resource Manager trafiğine önemli ölçüde katkıda bulunur ve abonelik sınırlama olaylarının yaygın bir nedenidir. Bu API'yi yoğun bir şekilde kullanıyorsanız API'ye getBatch geçmenizi öneririz. Performansı artıran ve sınırlamayı azaltan tek bir REST isteğinde birden fazla kaynağı sorgulayabilirsiniz. İşlemlerinizi dönüştürme hakkında daha fazla bilgi için Ölçümler API'sinden getBatch API'sine nasıl geçiş yapılacağı hakkında bilgi bölümüne bakın.

Kısıtlanmış isteklerimi nasıl görüntüleyebilirim?

Kısıtlanmış isteklerinizi ve diğer Resource Manager ölçümlerinizi görüntülemek için bkz. Azure Resource Manager ölçümlerine erişme.

Neden örnek başına değil de bölge başına kısıtlama yapılır?

Farklı bölgelerde farklı sayıda Resource Manager örneği olduğundan, örnek başına sınırlama tutarsız sınırlama performansına neden olur. Bölge başına kısıtlama, kısıtlamanın tutarlı ve öngörülebilir olmasını sağlar.

Güncellenmiş hız sınırlama deneyimi sınırlarımı nasıl etkiler?

Daha fazla istek gönderebilirsiniz. Yazma istekleri 30 kat artar. Silme isteklerinin sayısı 2,4 kat arttı. Okuma istekleri 7,5 kat artar.

Arka Plan İşi Azaltma

Azure Resource Manager'daki (ARM) arka plan işleri, kaynak dağıtımları, tanılamalar ve sistem bakımı gibi işlemleri desteklemek için arka planda çalışan otomatik görevlerdir. Bu işler, kullanıcı isteklerini işlemek ve hizmet işlevselliğini sağlamak için gereklidir. ARM, platform kararlılığını ve güvenilirliğini korumak için bu görevlerden gelen yükü yönetmek amacıyla arka plan işleri sınırlama yöntemini kullanır.

Aşağıdaki hata iletisini alırsanız arka plan işi sınırlamasının ne zaman gerçekleştiğini belirleyebilirsiniz.

The request for subscription '{0}' could not be processed due to an excessive volume of traffic. Please try again later.

Müşteriler, yüksek frekanslı işlemler veya sistem çapındaki etkinliklerin tetikleyebileceği çok sayıda arka plan işi nedeniyle sınırlamayla karşılaşabilir. Müşteriler bu işlerin oluşturulması veya yürütülmesi üzerinde doğrudan denetime sahip olmasa da, olası sınırlama farkındalığı önemlidir.

Kaynak sağlayıcısı sınırları

Kaynak sağlayıcıları kendi kısıtlama sınırlarını uygular. Her abonelikte, kaynak sağlayıcısı istekteki kaynak için bölge başına kısıtlama uygular. Resource Manager Resource Manager örneğine göre kısıtlandığından ve her bölgede birkaç Resource Manager örneği olduğundan, kaynak sağlayıcısı önceki bölümdeki varsayılan sınırlardan daha fazla istek alabilir.

Bu bölümde, yaygın olarak kullanılan bazı kaynak sağlayıcılarının kısıtlama limitleri açıklanmıştır.

Depolama alanı azaltma

Aşağıdaki sınırlar yalnızca Azure Resource Manager'ı Azure Depolama ve Depolama Kaynak Sağlayıcısı ile kullanarak yönetim işlemleri gerçekleştirdiğinizde geçerlidir. Sınırlar, istekteki kaynağın bölgesi başına abonelik başına uygulanır.

Kaynak Sınır
Depolama hesabı yönetimi işlemleri (okuma) 5 dakikada 800
Depolama hesabı yönetimi işlemleri (yazma) Saniyede 10/saatte 1.200
Depolama hesabı yönetimi işlemleri (listeleme yapma) 5 dakikada 100

Ağ kısıtlaması

Microsoft.Network kaynak sağlayıcısı aşağıdaki kısıtlama sınırlarını uygular:

Operasyon Sınır
yaz veya sil (PUT) 5 dakikada 1.000
okuma (GET) 5 dakikada 10.000

Bu genel sınırlara ek olarak bkz . Azure DNS için kullanım sınırları.

Hesaplama kısıtlaması

Microsoft Compute, Sanal Makine ve Sanal Makine Ölçek Kümesi kullanıcıları için optimum deneyimi sağlamak amacıyla kısıtlama uygular. İşlem Azaltma Sınırları, VM, Sanal Makine Ölçek Kümeleri ve Ölçek Kümesi VM'leri için azaltma ilkeleri ve sınırları hakkında kapsamlı bilgiler sağlar.

Azure Kaynak Grafiği sınırlama

Azure Kaynak Grafiği, işlemler için isteklerin sayısını sınırlar. Kalan istekleri ve sınıra ulaşıldığında nasıl yanıt verileceğini belirlemek için bu makaledeki adımlar Kaynak Grafı için de geçerlidir. Ancak Kaynak Grafı kendi sınırını ve sıfırlama oranını ayarlar. Daha fazla bilgi için Kaynak Grafı kısıtlama üst bilgileri'ne bkz.

Azure Kaynak Grafı, mevcut Azure Resource Manager denetim düzlemi GET ve LIST API'leriyle sorunsuz bir şekilde tümleşerek, kaynak sağlayıcı sınırlama sınırlarına ulaştığınızda kaynak verilerini almak için ek bir mekanizma sunan bir çözüme de sahiptir ve kaynak veri erişimi için güçlü, ölçeklenebilir bir çözüm sunar. Daha fazla bilgi için bkz . ARG GET/LIST API.

Diğer kaynak sağlayıcıları

Diğer kaynak sağlayıcılarda kısıtlama hakkında bilgi için bkz:

Hata kodu

Sınıra ulaştığınızda HTTP durum kodu 429 Çok fazla istek alırsınız. Yanıt, bir sonraki isteği göndermeden önce uygulamanızın beklemesi gereken saniye sayısını belirten bir Yeniden Deneme-Sonra değeri içerir. Yeniden deneme değeri tamamlanmadan önce bir istek gönderirseniz, isteğiniz işlenmez ve yeni bir yeniden deneme değeri döndürülür.

Azure SDK kullanıyorsanız SDK'nın otomatik yeniden deneme yapılandırması olabilir. Daha fazla bilgi için bkz . Azure hizmetleri için yeniden deneme kılavuzu.

Bazı kaynak sağlayıcıları geçici bir sorun bildirmek için 429 döndürür. Sorun, isteğinizin neden olmadığı bir aşırı yüklenme durumu olabilir. Alternatif olarak, hedef kaynağın veya bağımlı kaynağın durumuyla ilgili geçici bir hata olabilir. Örneğin, başka bir işlem hedef kaynağı kilitlediğinde ağ kaynak sağlayıcısı RetryableErrorDueToAnotherOperation hata koduyla 429 döndürür. Hatanın sınırlamadan mı yoksa geçici bir sorundan mı kaynaklandığını belirlemek için yanıttaki hata ayrıntılarını görüntüleyin.

Kalan istekler

Yanıt üst bilgilerini inceleyerek kalan isteklerin sayısını belirleyebilirsiniz. Okuma istekleri, kalan okuma isteklerinin sayısı için üst bilgide bir değer döndürür. Yazma istekleri, kalan yazma isteklerinin sayısı için bir değer içerir. Aşağıdaki tabloda, bu değerler için inceleyebileceğiniz yanıt üst bilgileri açıklanmaktadır:

Yanıt üst bilgisi Açıklama
x-ms-hız-sınırı-kalan-abonelik-silme-işlemleri Abonelik kapsamında kalan silinmesi gerekenler. Silme işlemlerinde bu değer döndürülür.
x-ms-oran-sınırı-kalan-abonelik-okumaları Abonelik kapsamında kalan okuma sayısı. Bu değer okuma işlemlerinde döndürülür.
Abonelik-yazımları-için-kalan-x-ms-oran-sınırı Abonelik kapsamında kalan yazma işlemleri. Bu değer yazma işlemlerinde döndürülür.
x-ms-kapsama-sınırlaması-kalan-kullanıcı-okumaları Kiracı kapsamındaki kalan okuma hakları.
kalan kiracı yazma oranı sınırı-x-ms Kiracıya özel kalan yazma işlemleri.
x-ms-frekans-sınırlaması-kalan-abonelik-kaynak-istekleri Aboneliğe bağlı kalan kaynak türü istekleri.

Bu üst bilgi değeri yalnızca bir hizmet varsayılan sınırı geçersiz kılarsa döndürülür. Resource Manager, abonelik okuma veya yazma işlemleri yerine bu değeri ekler.
x-ms-oran-sınırı-kalan-abonelik-kaynak-varlıkları-okuma Kalan abonelik kapsamlı kaynak türü koleksiyon istekleri.

Bu üst bilgi değeri yalnızca bir hizmet varsayılan sınırı geçersiz kılarsa döndürülür. Bu değer, kalan koleksiyon isteklerinin (liste kaynakları) sayısını sağlar.
Kiracı Kaynak İsteklerinin Kalan Oranı - x-ms-ratelimit-remaining-tenant-resource-requests Kalan kiracı kapsamlı kaynak türü istekleri.

Bu üst bilgi, kiracı düzeyindeki istekler için ve yalnızca bir hizmet varsayılan sınırı aştığında eklenir. Resource Manager, kiracının okuma veya yazma işlemlerinin yerine bu değeri ekler.
x-ms-ratelimit-remaining-tenant-resource-entities-read Kiracı kapsamlı kaynak türü koleksiyon istekleri kaldı.

Bu üst bilgi yalnızca kiracı düzeyindeki istekler için ve yalnızca bir hizmet varsayılan sınırı geçersiz kılarsa eklenir.

Kaynak sağlayıcısı, kalan isteklerle ilgili bilgileri içeren yanıt üst bilgilerini de döndürebilir. İşlem kaynak sağlayıcısı tarafından döndürülen yanıt üst bilgileri hakkında daha fazla bilgi için bkz Çağrı oranı bilgilendirici yanıt üst bilgileri.

Başlık değerlerini alma

Kodunuzda veya betiğinizde bu başlık değerlerini almak, herhangi bir başlık değerini almaktan farklı değildir.

Örneğin, C# dilinde, aşağıdaki kodla response adlı bir HttpWebResponse nesnesinden üst bilgi değerini alırsınız:

response.Headers.GetValues("x-ms-ratelimit-remaining-subscription-reads").GetValue(0)

PowerShell'de bir işlemden Invoke-WebRequest üst bilgi değerini alın.

$r = Invoke-WebRequest -Uri https://management.azure.com/subscriptions/{guid}/resourcegroups?api-version=2016-09-01 -Method GET -Headers $authHeaders
$r.Headers["x-ms-ratelimit-remaining-subscription-reads"]

Tam bir PowerShell örneği için Belirli bir Abonelik için ARM Sınırlarını Denetleme'ye bakın.

Hata ayıklamaya yönelik kalan istekleri görmek için PowerShell cmdlet'inizde -Debug parametresini sağlayın.

Get-AzResourceGroup -Debug

Yanıt, aşağıdaki yanıt değeri de dahil olmak üzere birçok değer içerir:

DEBUG: ============================ HTTP RESPONSE ============================

Status Code:
OK

Headers:
Pragma                        : no-cache
x-ms-ratelimit-remaining-subscription-reads: 11999

Yazma sınırlarını almak için bir yazma işlemi kullanın:

New-AzResourceGroup -Name myresourcegroup -Location westus -Debug

Yanıt, aşağıdaki değerler de dahil olmak üzere birçok değer içerir:

DEBUG: ============================ HTTP RESPONSE ============================

Status Code:
Created

Headers:
Pragma                        : no-cache
x-ms-ratelimit-remaining-subscription-writes: 1199

Azure CLI'de, başlık değerini almak için daha ayrıntılı ayarı kullanırsınız:

az group list --verbose --debug

komutu, aşağıdaki değerler de dahil olmak üzere birçok değer döndürür:

msrest.http_logger : Response status: 200
msrest.http_logger : Response headers:
msrest.http_logger :     'Cache-Control': 'no-cache'
msrest.http_logger :     'Pragma': 'no-cache'
msrest.http_logger :     'Content-Type': 'application/json; charset=utf-8'
msrest.http_logger :     'Content-Encoding': 'gzip'
msrest.http_logger :     'Expires': '-1'
msrest.http_logger :     'Vary': 'Accept-Encoding'
msrest.http_logger :     'x-ms-ratelimit-remaining-subscription-reads': '11998'

Yazma sınırlarını almak için bir yazma işlemi kullanın:

az group create -n myresourcegroup --location westus --verbose --debug

İşlem, aşağıdaki değerler de dahil olmak üzere birçok değer döndürür:

msrest.http_logger : Response status: 201
msrest.http_logger : Response headers:
msrest.http_logger :     'Cache-Control': 'no-cache'
msrest.http_logger :     'Pragma': 'no-cache'
msrest.http_logger :     'Content-Length': '163'
msrest.http_logger :     'Content-Type': 'application/json; charset=utf-8'
msrest.http_logger :     'Expires': '-1'
msrest.http_logger :     'x-ms-ratelimit-remaining-subscription-writes': '1199'

Sonraki adımlar