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.
Azaltma iki düzeyde gerçekleşir. Azure Resource Manager, abonelik ve kiracı isteklerini kısıtlar. İstek, abonelik ve kiracı için azaltma sınırlarının altındaysa Resource Manager, isteği kaynak sağlayıcısına yönlendirir. Kaynak sağlayıcısı, işlemlerine göre uyarlanmış azaltma sınırları uygular.
Aşağıdaki görüntüde kullanıcıdan Azure Resource Manager'a ve kaynak sağlayıcısına istek olarak azaltmanın nasıl uygulandığı gösterilmektedir. Görüntüde, isteklerin başlangıçta isteği gönderen kullanıcının bölgesindeki asıl kimlik ve Azure Resource Manager örneği başına kısıtlanmış olması gösterilmektedir. İstekler saatte bir azaltılır. İstek kaynak sağlayıcısına iletildiğinde, istekler kullanıcının bölgesindeki Azure Resource Manager örneği yerine kaynağın bölgesi başına kısıtlanır. Kaynak sağlayıcısı istekleri de asıl kullanıcı kimliği ve saat başına kısıtlanır.
Abonelik ve kiracı sınırları
Abonelik düzeyindeki ve kiracı düzeyindeki her işlem azaltma sınırlarına tabidir. Abonelik istekleri, aboneliğinizdeki kaynak gruplarını alma gibi abonelik kimliğinizi geçirmeyi içeren isteklerdir. Örneğin, adresine https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups?api-version=2022-01-01
istek göndermek abonelik düzeyinde bir işlemdir. Kiracı istekleri geçerli Azure konumlarını alma gibi abonelik kimliğinizi içermez. Örneğin, 'a https://management.azure.com/tenants?api-version=2022-01-01
istek göndermek kiracı düzeyinde bir işlemdir.
Saat başına varsayılan azaltma sınırları aşağıdaki tabloda gösterilmiştir.
Kapsam | Operations | Sınır |
---|---|---|
Abonelik | okuma | 12000 |
Abonelik | silme | 15000 |
Abonelik | yazma | 1200 |
Kiracı | okuma | 12000 |
Kiracı | yazma | 1200 |
Bu sınırların kapsamı, istekleri yapan güvenlik sorumlusu ve abonelik kimliği veya kiracı kimliğine göre belirlenir. İstekleriniz birden fazla güvenlik sorumlusundan geliyorsa, abonelik veya kiracıdaki sınırınız saatte 12.000 ve 1.200’den büyüktür.
Bu sınırlar her Azure Resource Manager örneği için geçerlidir. Her Azure bölgesinde birden çok örnek vardır ve Azure Resource Manager tüm Azure bölgelerine dağıtılır. Bu nedenle uygulamada sınırlar bu sınırlardan daha yüksektir. Bir kullanıcıdan gelen istekler genellikle Azure Resource Manager'ın farklı örnekleri tarafından işlenir.
Kalan istekler yanıt üst bilgisi değerlerinde döndürülür.
Bölgesel azaltma ve belirteç demeti algoritmasına geçiş
2024'den itibaren Microsoft, Azure aboneliklerini yeni bir azaltma mimarisine geçiriyor. Bu değişiklikle yeni azaltma sınırlarıyla karşılaşacaksınız. Yeni azaltma sınırları, Azure Resource Manager örneği yerine bölge başına uygulanır. Yeni mimari, API azaltmayı yönetmek için bir belirteç demeti algoritması kullanır.
Belirteç demeti, 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ı belirteçlerin demette 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.
Yeni sınırlar şunlardır:
Kapsam | Operations | Demet boyutu | Saniye başına yeniden doldurma oranı |
---|---|---|---|
Abonelik | okuma | 250 | 25 |
Abonelik | silme | 200 | 10 |
Abonelik | yazma | 200 | 10 |
Kiracı | okuma | 250 | 25 |
Kiracı | silme | 200 | 10 |
Kiracı | yazma | 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 sorumlusu veya kiracıya özgü sınırlar aşılırsa istekler kısıtlanır.
Ü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'yi kullanarak ölçümleri okumak */providers/microsoft.insights/metrics
, genel Azure Resource Manager trafiğine önemli ölçüde katkıda bulunur ve abonelik azaltma 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 azaltmayı azaltan tek bir REST isteğinde birden çok kaynağı sorgulayabilirsiniz. İşlemlerinizi dönüştürme hakkında daha fazla bilgi için bkz . ÖlçümLER API'sinden getBatch API'sine geçiş.
Aboneliğimin yeni azaltma deneyimini kullanıp kullanmadiğini Nasıl yaparım? biliyor musunuz?
Aboneliğiniz yeni azaltma deneyimine geçirildikten sonra yanıt üst bilgisi kalan istekleri saat yerine dakika başına gösterir. Ayrıca, değeriniz Retry-After
beş dakika yerine bir dakika veya daha kısa bir dakika gösterir. Daha fazla bilgi için bkz . Hata kodu.
Azaltma neden örnek başına değil de bölge başına olarak değiştiriliyor?
Farklı bölgelerde farklı sayıda Resource Manager örneği olduğundan, örnek başına azaltma tutarsız azaltma performansına neden olur. Bölge başına azaltma, azaltmanın tutarlı ve öngörülebilir olmasını sağlar.
Yeni azaltma deneyimi sınırlarımı nasıl etkiler?
Daha fazla istek gönderebilirsiniz. Yazma istekleri 30 kat artar. Silme istekleri 2,4 kat artar. Okuma istekleri 7,5 kat artar.
Aboneliğimin yeni azaltma deneyimine geçişini engelleyebilir miyim?
Hayır, sonunda tüm abonelikler geçirilecek.
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 kaynağın bölge başına azaltmasını sağlar. 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 azaltma sınırları 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) | 5 dakikada 100 |
Ağ azaltma
Microsoft.Network kaynak sağlayıcısı aşağıdaki kısıtlama sınırlarını uygular:
İşlem | Sınır |
---|---|
yazma/silme (PUT) | 5 dakikada 1000 |
okuma (GET) | 5 dakikada 10000 |
Bu genel sınırlara ek olarak bkz . Azure DNS için kullanım sınırları.
İşlem azaltma
Microsoft Compute, Sanal Makine ve Sanal Makine Ölçek Kümesi kullanıcıları için en iyi deneyimi sağlamak için azaltma 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ı bilgi sağlar.
Azure Kaynak Grafı azaltma
Azure Kaynak Grafı, isteklerin sayısını işlemleriyle 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 bkz. Kaynak Grafı azaltma üst bilgileri.
Diğer kaynak sağlayıcıları
Diğer kaynak sağlayıcılarında azaltma 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 (veya uyku moduna geçmesi) 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 doğrudan neden olmadığı bir aşırı yükleme koşulu olabilir. Alternatif olarak, hedef kaynağın veya bağımlı kaynağın durumuyla ilgili geçici bir hatayı temsil edebilir. Örneğin, hedef kaynak başka bir işlem tarafından kilitlendiğinde ağ kaynak sağlayıcısı RetryableErrorDueToAnotherOperation hata koduyla 429 döndürür. Hatanın azaltmadan mı yoksa geçici bir koşuldan mı geldiğini 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-ratelimit-remaining-subscription-deletes | Abonelik kapsamında kalan silme işlemleri. Silme işlemlerinde bu değer döndürülür. |
x-ms-ratelimit-remaining-subscription-reads | Abonelik kapsamlı okumalar kaldı. Bu değer okuma işlemlerinde döndürülür. |
x-ms-ratelimit-remaining-subscription-writes | Abonelik kapsamlı yazma işlemleri kaldı. Bu değer yazma işlemlerinde döndürülür. |
x-ms-ratelimit-remaining-tenant-reads | Kiracı kapsamlı okumalar kaldı |
x-ms-ratelimit-remaining-tenant-writes | Kiracı kapsamlı yazma işlemleri kaldı |
x-ms-ratelimit-remaining-subscription-resource-requests | Abonelik kapsamlı kaynak türü istekleri kaldı. 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-ratelimit-remaining-subscription-resource-entities-read | Abonelik kapsamlı kaynak türü koleksiyon istekleri kaldı. 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. |
x-ms-ratelimit-remaining-tenant-resource-requests | Kiracı kapsamlı kaynak türü 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. Resource Manager, kiracı okuma veya yazma işlemleri 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ı hızı bilgi yanıt üst bilgileri.
Üst bilgi değerlerini alma
Kodunuzda veya betiğinizde bu üst bilgi değerlerini almak, herhangi bir üst bilgi 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 Invoke-WebRequest işleminden üst bilgi değerini alırsınız.
$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 bkz . Abonelik için Resource Manager Sınırlarını Denetleme.
Hata ayıklama için kalan istekleri görmek istiyorsanız PowerShell cmdlet'inizde -Debug parametresini sağlayabilirsiniz.
Get-AzResourceGroup -Debug
Bu, aşağıdaki yanıt değeri de dahil olmak üzere birçok değer döndürür:
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
Bu, aşağıdaki değerler de dahil olmak üzere birçok değer döndürür:
DEBUG: ============================ HTTP RESPONSE ============================
Status Code:
Created
Headers:
Pragma : no-cache
x-ms-ratelimit-remaining-subscription-writes: 1199
Azure CLI'da daha ayrıntılı seçeneği kullanarak üst bilgi değerini alırsınız.
az group list --verbose --debug
Bu, 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
Bu, 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
- Sınırlar ve kotalar hakkında daha fazla bilgi için bkz. Azure aboneliği ile hizmet sınırları, kotalar ve kısıtlamalar.
- Zaman uyumsuz REST isteklerini işleme hakkında bilgi edinmek için bkz. Zaman uyumsuz Azure işlemlerini izleme.