Descripción de cómo Azure Resource Manager limita las solicitudes
En este artículo se describe cómo Azure Resource Manager regula las solicitudes. Se muestra cómo hacer el seguimiento del número de solicitudes que quedan para alcanzar el límite y cómo responder cuando se alcance.
La regulación se produce en dos niveles. Azure Resource Manager regula las solicitudes para la suscripción y el inquilino. Si la solicitud está por debajo de los límites de regulación para la suscripción y el inquilino, Resource Manager dirige la solicitud al proveedor de recursos. El proveedor de recursos aplica los límites de regulación adaptados a sus operaciones.
En la imagen siguiente se muestra cómo se aplica la regulación a medida que una solicitud va del usuario a Azure Resource Manager y al proveedor de recursos. La imagen muestra que las solicitudes se limitan inicialmente por id. de entidad de seguridad y por instancia de Azure Resource Manager en la región del usuario que envía la solicitud. Las solicitudes se limitan por hora. Cuando la solicitud se reenvía al proveedor de recursos, las solicitudes se limitan por región del recurso en lugar de por instancia de Azure Resource Manager en la región del usuario. Las solicitudes del proveedor de recursos también se limitan por id. de usuario principal y por hora.
Límites de la suscripción y el inquilino
Cada operación de nivel de suscripción y de nivel de inquilino está sujeta a límites de regulación. Las solicitudes de la suscripción son aquellas en las que se pasa el identificador de la suscripción; por ejemplo, las solicitudes para recuperar los grupos de recursos de la suscripción. Por ejemplo, enviar una solicitud a https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups?api-version=2022-01-01
es una operación de nivel de suscripción. Las solicitudes del inquilino no incluyen el identificador de la suscripción; por ejemplo, las solicitudes para recuperar ubicaciones válidas de Azure. Por ejemplo, enviar una solicitud a https://management.azure.com/tenants?api-version=2022-01-01
es una operación de nivel de inquilino.
Los límites de regulación predeterminados por hora se muestran en la tabla siguiente.
Ámbito | Operaciones | Límite |
---|---|---|
Subscription | Lecturas | 12000 |
Subscription | Eliminaciones | 15000 |
Subscription | Escrituras | 1200 |
Inquilino | Lecturas | 12000 |
Inquilino | Escrituras | 1200 |
Estas cifras están limitadas a la entidad de seguridad (usuario o aplicación) que realiza las solicitudes y al id. de suscripción o de inquilino. Si las solicitudes proceden de más de una entidad de seguridad, el límite en toda la suscripción o inquilino es superior a 12 000 y 1200 por hora.
Estos límites se aplican a cada instancia de Azure Resource Manager. En cada región de Azure hay varias instancias, y Azure Resource Manager está implementado en todas las regiones de Azure. Por lo tanto, en la práctica, los límites son superiores a estos. Normalmente, las solicitudes de un usuario se controlan mediante diferentes instancias de Azure Resource Manager.
Las solicitudes restantes se devuelven en los valores de encabezado de respuesta.
Migración a la limitación regional y algoritmo de token bucket
A partir de 2024, Microsoft está migrando las suscripciones de Azure a una nueva arquitectura de limitación. Con este cambio, experimentará nuevos límites. Los nuevos límites se aplican por región en lugar de por instancia de Azure Resource Manager. La nueva arquitectura usa un algoritmo de token bucket para administrar la limitación de API.
El token bucket representa el número máximo de solicitudes que puede enviar por cada segundo. Cuando se alcanza el número máximo de solicitudes, la tasa de recarga determina la rapidez con la que los tokens están disponibles en el cubo.
Estos límites actualizados facilitan la actualización y administración de la cuota.
Los nuevos límites son:
Ámbito | Operaciones | Tamaño del cubo | Tasa de recarga por segundo |
---|---|---|---|
Subscription | Lecturas | 250 | 25 |
Subscription | Eliminaciones | 200 | 10 |
Subscription | Escrituras | 200 | 10 |
Inquilino | Lecturas | 250 | 25 |
Inquilino | Eliminaciones | 200 | 10 |
Inquilino | Escrituras | 200 | 10 |
Los límites de suscripción se aplican por suscripción, por entidad de servicio y por tipo de operación. También hay límites de suscripción globales equivalentes a 15 veces los límites de entidad de servicio individuales para cada tipo de operación. Los límites globales se aplican en todas las entidades de servicio. Las solicitudes se limitarán si se superan los límites globales, de entidad de servicio o específicos del inquilino.
Los límites pueden ser más pequeños para los clientes gratuitos o de prueba.
Por ejemplo, supongamos que tiene un tamaño de cubo de 250 tokens para solicitudes de lectura y una tasa de recarga de 25 tokens por segundo. Si envía 250 solicitudes de lectura en un segundo, el cubo está vacío y las solicitudes están limitadas. Cada segundo, 25 tokens estarán disponibles hasta que el cubo alcance su capacidad máxima de 250 tokens. Puede usar tokens a medida que estén disponibles.
La lectura de métricas mediante la API */providers/microsoft.insights/metrics
contribuye significativamente al tráfico general de Azure Resource Manager y es una causa común de los eventos de limitación de suscripciones. Si usa esta API en gran medida, se recomienda cambiar a la API getBatch
. Puede consultar varios recursos en una sola solicitud REST, lo que mejora el rendimiento y reduce la limitación. Para obtener más información sobre cómo convertir las operaciones, consulte Cómo migrar desde la API de métricas a la API getBatch.
¿Cómo sé si mi suscripción usa la nueva experiencia de limitación?
Después de migrar la suscripción a la nueva experiencia de limitación, el encabezado de respuesta muestra las solicitudes restantes por minuto en lugar de por hora. Además, el valor Retry-After
muestra un minuto o menos, en lugar de cinco minutos. Para obtener más información, consulte Código de error.
¿Por qué la limitación cambia a por región en lugar de por instancia?
Dado que diferentes regiones tienen un número diferente de instancias de Resource Manager, la limitación por instancia provoca un rendimiento de limitación incoherente. La limitación por región hace que la limitación sea coherente y predecible.
¿Cómo afecta la nueva experiencia de limitación a mis límites?
Puede enviar más solicitudes. Las solicitudes de escritura aumentan en 30 veces. Las solicitudes de eliminación aumentan en 2,4 veces. Las solicitudes de lectura aumentan en 7,5 veces.
¿Puedo impedir que mi suscripción se migre a la nueva experiencia de limitación?
No, todas las suscripciones se migrarán finalmente.
Límites del proveedor de recursos
Los proveedores de recursos aplican sus propios límites de regulación. Con cada suscripción, el proveedor de recursos impone limitaciones por región del recurso en la solicitud. Dado que Resource Manager limita por instancia de Resource Manager y hay varias instancias de Resource Manager en cada región, el proveedor de recursos puede recibir más solicitudes que los límites predeterminados de la sección anterior.
En esta sección se describen los límites de regulación de algunos proveedores de recursos ampliamente utilizados.
Limitación del almacenamiento
Los límites siguientes se aplican solo si realiza operaciones de administración mediante Azure Resource Manager con Azure Storage. Los límites se aplican por región del recurso en la solicitud.
Recurso | Límite |
---|---|
Operaciones de administración de la cuenta de almacenamiento (lectura) | 800 por cada 5 minutos |
Operaciones de administración de la cuenta de almacenamiento (escritura) | 10 por segundo / 1 200 por hora |
Operaciones de administración de la cuenta de almacenamiento (lista) | 100 por cada 5 minutos |
Limitación de la red
El proveedor de recursos Microsoft.Network aplica los siguientes límites de regulación:
Operación | Límite |
---|---|
Escritura/eliminación (PUT) | 1000 por cada 5 minutos |
Lectura (GET) | 10000 por cada 5 minutos |
Además de esos límites generales, consulte los límites de uso de Azure DNS.
Regulación de proceso
Microsoft Compute implementa la limitación para proporcionar una experiencia óptima para los usuarios de máquinas virtuales y conjuntos de escalado de máquinas virtuales. Los límites de la limitación de procesos ofrecen información exhaustiva sobre las directivas de limitación y los límites para máquinas virtuales, Virtual Machine Scale Sets y máquinas virtuales de conjunto de escalado.
Regulación de Azure Resource Graph
Azure Resource Graph limita el número de solicitudes para sus operaciones. Los pasos descritos en este artículo para determinar las solicitudes restantes y sobre cómo responder cuando se alcanza el límite también se aplican a Resource Graph. Sin embargo, Resource Graph establece su límite y frecuencia de restablecimiento propios. Para más información, consulte Encabezados de limitación de Resource Graph.
Otros proveedores de recursos
Para más información acerca de la limitación en otros proveedores de recursos, consulte:
Código de error
Cuando se alcanza este límite, recibirá el código de estado HTTP 429 Demasiadas solicitudes. En la respuesta se incluye el valor Retry-After que especifica el número de segundos que debe esperar (o estar en estado de suspensión) la aplicación antes de enviar la siguiente solicitud. Si envía una solicitud antes de que transcurra el tiempo especificado en el valor de reintento, la solicitud no se procesará y se devolverá un nuevo valor de reintento.
Si utiliza una instancia de Azure SDK, es posible que el SDK tenga una configuración de reintento automático. Para más información, consulte la Guía de reintentos para servicios de Azure.
Algunos proveedores de recursos devuelven 429 para informar de un problema temporal. El problema podría ser una condición de sobrecarga que no se deba directamente a la solicitud. O bien, podría representar un error temporal sobre el estado del recurso de destino o del recurso dependiente. Por ejemplo, el proveedor de recursos de red devuelve 429 con el código de error RetryableErrorDueToAnotherOperation cuando otra operación bloquea el recurso de destino. Para determinar si el error proviene de la regulación o de una condición temporal, vea los detalles del error en la respuesta.
Solicitudes restantes
Puede determinar el número de solicitudes restantes examinando los encabezados de respuesta. Las solicitudes de lectura devuelven un valor en el encabezado para el número de solicitudes de lectura restantes. Las solicitudes de escritura incluyen un valor para el número de solicitudes de escritura restantes. En la tabla siguiente se describen los encabezados de respuesta que puede examinar para esos valores:
Encabezado de respuesta | Descripción |
---|---|
x-ms-ratelimit-remaining-subscription-deletes | Eliminaciones restantes del ámbito de la suscripción. Este valor lo devuelven las operaciones de eliminación. |
x-ms-ratelimit-Remaining-Subscription-Reads | Lecturas restantes del ámbito de la suscripción. Este valor lo devuelven las operaciones de lectura. |
x-ms-ratelimit-Remaining-Subscription-Writes | Escrituras restantes del ámbito de la suscripción. Este valor lo devuelven las operaciones de escritura. |
x-ms-ratelimit-Remaining-tenant-Reads | Lecturas restantes del ámbito del inquilino |
x-ms-ratelimit-Remaining-tenant-Writes | Escrituras restantes del ámbito del inquilino |
x-ms-ratelimit-Remaining-Subscription-Resource-Requests | Solicitudes de tipos de recursos restantes del ámbito de la suscripción Este valor de encabezado solo se devuelve si un servicio invalida el límite predeterminado. Resource Manager agrega este valor en lugar de las lecturas o escrituras de la suscripción. |
x-ms-ratelimit-Remaining-Subscription-Resource-Entities-Read | Solicitudes de colección de tipos de recursos restantes del ámbito de la suscripción Este valor de encabezado solo se devuelve si un servicio invalida el límite predeterminado. Este valor proporciona el número de solicitudes de colección restantes (recursos de lista). |
x-ms-ratelimit-Remaining-tenant-Resource-Requests | Solicitudes de tipos de recurso restantes del ámbito del inquilino Este encabezado solo se agrega para las solicitudes en el nivel del inquilino, y solo si un servicio invalida el límite predeterminado. Resource Manager agrega este valor en lugar de las lecturas o escrituras del inquilino. |
x-ms-ratelimit-Remaining-tenant-Resource-Entities-Read | Solicitudes de colección de tipos de recursos restantes del ámbito del inquilino Este encabezado solo se agrega para las solicitudes en el nivel del inquilino, y solo si un servicio invalida el límite predeterminado. |
El proveedor de recursos también puede devolver encabezados de respuesta con información sobre las solicitudes restantes. Para obtener información sobre los encabezados de respuesta devueltos por el proveedor de recursos de proceso, vea Encabezados de respuesta que informan sobre la frecuencia de llamadas.
Recuperación de los valores de encabezado
El proceso de recuperación de estos valores de encabezado del código o el script es igual que el de cualquier valor de encabezado.
Por ejemplo, en C#, recupere el valor del encabezado de un objeto HttpWebResponse denominado "response"con el código siguiente:
response.Headers.GetValues("x-ms-ratelimit-remaining-subscription-reads").GetValue(0)
En PowerShell, recupere el valor del encabezado de una operación Invoke-WebRequest.
$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"]
Para obtener un ejemplo completo de PowerShell, consulte comprobación de los límites de Resource Manager para una suscripción.
Si quiere ver las solicitudes restantes de depuración, puede proporcionar el parámetro -Debug en el cmdlet PowerShell.
Get-AzResourceGroup -Debug
Que devuelve muchos valores, incluido el siguiente valor de respuesta:
DEBUG: ============================ HTTP RESPONSE ============================
Status Code:
OK
Headers:
Pragma : no-cache
x-ms-ratelimit-remaining-subscription-reads: 11999
Para obtener los límites de escritura, utilice una operación de escritura:
New-AzResourceGroup -Name myresourcegroup -Location westus -Debug
Esta operación devuelve muchos valores, incluidos los siguientes:
DEBUG: ============================ HTTP RESPONSE ============================
Status Code:
Created
Headers:
Pragma : no-cache
x-ms-ratelimit-remaining-subscription-writes: 1199
En la CLI de Azure, recupere el valor del encabezado mediante la opción más detallada.
az group list --verbose --debug
Esta operación devuelve muchos valores, incluidos los siguientes:
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'
Para obtener los límites de escritura, utilice una operación de escritura:
az group create -n myresourcegroup --location westus --verbose --debug
Esta operación devuelve muchos valores, incluidos los siguientes:
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'
Pasos siguientes
- Para más información acerca de límites y cuotas, consulte Límites, cuotas y restricciones de suscripción y servicios de Microsoft Azure.
- Para obtener información sobre el control de solicitudes asincrónicas de REST, vea Seguimiento de las operaciones asincrónicas de Azure.