Simple Message Queue (formerly MNS) aplica una directiva de limitación a las solicitudes que superan el umbral de limitación. Esto evita una presión excesiva sobre los recursos subyacentes. Conocer esta directiva le permite planificar adecuadamente la frecuencia de envío y recepción de mensajes, así como tomar las medidas pertinentes cuando se activa la limitación.
Comportamiento de la limitación
Cuando el tráfico se acerca o alcanza el umbral de limitación, el servidor ajusta automáticamente dicho umbral con base en el uso de recursos en tiempo real. En la mayoría de los escenarios, este ajuste dinámico admite un mayor volumen de solicitudes concurrentes sin que los usuarios lo perciban. Si se activa una limitación temporal, por ejemplo, por picos repentinos de tráfico o cuellos de botella en los recursos del clúster, el sistema restablece la capacidad de procesamiento de tráfico. Además, aumenta de forma síncrona el umbral de limitación una vez que finaliza el escalado automático.
Al activarse la limitación, el sistema pone en marcha un mecanismo de contrapresión. Las solicitudes que superan el umbral se retienen brevemente en el servidor y luego devuelven un error 429 (TooManyRequests). El servidor ajusta dinámicamente la duración de esta retención según la carga en tiempo real; por lo general, varía entre 10 y 500 milisegundos, con un máximo de 5 segundos. Este mecanismo evita la sobrecarga del sistema, lo cual podría afectar el rendimiento y la estabilidad generales.
Código de error
Cuando se activa la directiva de limitación, el servidor de Simple Message Queue (formerly MNS) devuelve la siguiente información de código de error.
|
Código de estado HTTPS |
Código de error |
Mensaje de error |
|
429 |
TooManyRequests |
The request is denied by cluster flow limiter for too many requests. |
Umbrales de limitación
Directiva de limitación por consumo anómalo en el modo de consumo de colas
En el patrón estándar de consumo de colas, el cliente debe enviar una solicitud al servidor para eliminar el mensaje después de procesarlo correctamente. Si un cliente presenta de manera reiterada el comportamiento no estándar de "recibir mensajes sin enviar solicitudes de eliminación", el sistema lo marca como consumo anómalo. Ante esto, activa un mecanismo de limitación para garantizar la estabilidad del sistema. Una vez aplicada la limitación, la velocidad a la que el cliente recibe mensajes nuevos disminuye considerablemente.
La limitación se activa cuando se cumple cualquiera de las siguientes condiciones:
Duración: el consumo anómalo persiste durante más de 30 minutos.
Cantidad de mensajes: el número acumulado de mensajes recibidos pero no eliminados alcanza los 5,000.
Tasa de tráfico: la tasa instantánea de mensajes recibidos pero no eliminados supera los 1,000 TPS.
Directiva de limitación para solicitudes de alto tráfico
El umbral de limitación predeterminado es de 20,000 TPS por cuenta de Alibaba Cloud y por región. Si su tráfico supera los 20,000 TPS, inicie sesión en la consola Quota Center para solicitar un aumento del valor máximo de TPS por región. Para conocer los pasos detallados, consulte Submit an application to increase a quota.
Reglas para el conteo de solicitudes:
Cada llamada a la API cuenta como una solicitud.
Cálculo de TPS en escenarios de envío por lotes: cuando llama a la operación BatchSendMessage en una cola, los TPS de BatchSendMessage equivalen a las solicitudes reales de BatchSendMessage por segundo multiplicadas por la cantidad de mensajes por solicitud. Por ejemplo, si se llama a BatchSendMessage 100 veces por segundo y cada llamada contiene 10 mensajes, los TPS consumidos por una sola cola son 100 × 10 = 1,000.
Cálculo de TPS en escenarios de consumo por lotes: cuando llama a la operación BatchReceiveMessage en una cola, los TPS de BatchReceiveMessage equivalen a las solicitudes reales de BatchReceiveMessage por segundo, independientemente de la cantidad de mensajes por lote. Por ejemplo, si se llama a BatchReceiveMessage 100 veces por segundo y cada llamada contiene 10 mensajes, los TPS consumidos por una sola cola son 100.
Cómo evitar el impacto de la limitación
Para evitar que la directiva de limitación afecte su negocio, preste atención a los dos aspectos siguientes:
Planifique el tráfico cuidadosamente y comunique los picos con anticipación: si prevé un crecimiento de tráfico a gran escala y los TPS superan el valor máximo que puede solicitar en la consola Quota Center, envíe un ticket para comunicarse con el soporte técnico. Así podrá reservar más recursos y evitar que se active la limitación.
Monitoreo y alertas: se recomienda integrar el servicio con Create an alert rule de Simple Message Queue (formerly MNS). Consulte el uso de TPS en tiempo real de cada cola o tema en la consola de CloudMonitor (CloudMonitor console > Cloud Service Monitoring > Message Service MNS) para detectar cuándo se está alcanzando el umbral de limitación.