Configuraciones disponibles para límites de tasa y estrangulamiento globales

Discourse se entrega con 3 límites globales de tasa diferentes que pueden ser configurados por los administradores del sitio.

Límites de tasa globales por IP

Estos límites se aplican a cada dirección IP única que accede a la aplicación de Discourse. (los archivos que se sirven directamente desde el sistema de archivos o el CDN están excluidos)

Por defecto, este límite de tasa está habilitado; puedes desactivarlo o configurarlo en un modo de solo reporte.

DISCOURSE_MAX_REQS_PER_IP_MODE : valor predeterminado block, este límite de tasa se aplica de forma predeterminada. (las otras opciones son warn, warn+block y none)

DISCOURSE_MAX_REQS_PER_IP_PER_MINUTE: número de solicitudes por IP por minuto (el valor predeterminado es 200)

DISCOURSE_MAX_REQS_PER_IP_PER_10_SECONDS: número de solicitudes por IP por cada 10 segundos (el valor predeterminado es 50)

DISCOURSE_MAX_ASSET_REQS_PER_IP_PER_10_SECONDS: número de solicitudes de recursos (avatares/css) por IP por cada 10 segundos (el valor predeterminado es 200)

DISCOURSE_MAX_REQS_RATE_LIMIT_ON_PRIVATE: ¿debe aplicarse el límite de tasa a las IPs privadas que acceden a Discourse? El valor predeterminado es false.

DISCOURSE_SKIP_PER_IP_RATE_LIMIT_TRUST_LEVEL: usar límites de tasa por usuario en lugar de límites por IP para usuarios con este nivel de confianza o superior (predeterminado 1)

DISCOURSE_MAX_REQS_PER_IP_EXCEPTIONS: una lista separada por espacios de direcciones IP o bloques CIDR que se eximirán del límite de tasa por IP. Por ejemplo: 14.15.16.32/27 216.148.1.2

Límites de tasa de la API de usuario

Las aplicaciones móviles adquieren una clave de API de usuario por dispositivo para acceder a Discourse en nombre de un usuario (utilizando un protocolo abierto). Estas claves de API están muy estrictamente limitadas.

DISCOURSE_MAX_USER_API_REQS_PER_MINUTE: predeterminado 20
DISCOURSE_MAX_USER_API_REQS_PER_DAY: predeterminado 2880

Límites de tasa de la API de administrador

Las claves de API de administrador se pueden generar a través de la página yoursite.com/admin/api/keys. Estas claves pueden operar en nombre de los usuarios, pero requieren privilegios de administrador para su generación. Existe un límite de 60 solicitudes por minuto, compartido entre todas las claves.

Los usuarios que autoalojan pueden cambiar esto en su archivo app.yml. Los clientes alojados necesitarán contactar a su proveedor de alojamiento.

DISCOURSE_MAX_ADMIN_API_REQS_PER_MINUTE : 60

Límites de tasa de la API del plugin Data Explorer

DISCOURSE_MAX_DATA_EXPLORER_API_REQ_MODE: predeterminado warn, este límite de tasa se aplica de forma predeterminada. (las otras opciones son block, warn+block y none)

DISCOURSE_MAX_DATA_EXPLORER_API_REQS_PER_10_SECONDS: 2

Nota: Las solicitudes realizadas a través de la interfaz de usuario de Data Explorer no cuentan hacia el límite de tasa.

¿Qué debo hacer si alcanzo un límite de tasa y soy limitado?

Si estás consumiendo la API programáticamente y recibes una respuesta de limitación con código de estado 429, debes respetarla y reducir la velocidad.

Como usuario final, no deberías experimentar límites de tasa; si lo haces, reduce la velocidad. Podrías activarlo al abrir 50 pestañas muy rápido o haciendo algo similar.

¡Advertencia sobre firewall y proxy! :warning:

Si estás ejecutando un proxy inverso mal configurado, Discourse podría pensar que todas las solicitudes provienen de una única dirección IP; es muy probable que alcances los límites de tasa temprano. Asegúrate de configurar tu proxy inverso para reenviar la IP correctamente.

¿Cómo modifico estos límites?

Para modificar los límites, agrega el cambio deseado en tu archivo app.yml en la sección env.

:discourse: Si estás alojado por Discourse y tienes un plan Enterprise, contacta a team@discourse.org si necesitas ajustar alguno de estos límites.

Los límites de tasa globales no son ajustables en los planes Free, Starter, Pro o Business.

60 Me gusta
Troubleshooting a 429 (rate limit)
Is there a limit of API requests?
Rate limits for API users
Any way to turn off RateLimiter temporarily for bulk creation by admin?
Changing/removing API rate limit with category creation
Internal links not oneboxing in private messages
How to improve the forum api call number limit?
Rate limit errors although IP is whitelisted
API rate limits
How to edit "hidden" site_settings?
How-to disable or tune rate limiting by ip address?
Error code 429 when utilising a Zapier integration
429 error when opening multiple topics
Why semrushbot and ahrefsbot are blocked by default?
Understanding /logs/report_js_error 429
Remove the ip limits
User API keys specification
Discourse API Generating 429
How to disable api limits?
Global rate API Limit is not working on live server
How to avoid throttling limits with admin API key?
Set Environmental Variables
Discourse REST API Documentation
Increase rate limit for API?
How do I disable rate limiting from a single IP
Generate User Api Key Without User Approval
Default value for id_10_secs_limit
Semantic Search API
Self-hosting Index
Fetch All Posts from a Topic Using the API
Issues when I enable Component, maybe Right Sidebar Blocks?
Create and configure an API key
Direct URL for the "email me a login link" feature
Direct URL for the "email me a login link" feature
Do not see discourse/config/site_settings.yml to set USER API limits
API rate limits
Very slow discobot certificate generation on our server
Api call returns nothing when too many requests
Uncaught (in promise) error
You Have Performed this Action Too Many Times Error
Import posts through API (time delay)
Discourse-topic-organizer causing "Slow down, too Many Requests from this IP Address"
429 too many requests good or bad ? (please help)
Enable user to Generate API key
Changing/removing API rate limit with category creation
Webhook connect to post comments to WordPress working unreliably

Me parece que si tienes instalado web.ratelimited.template.yml, entonces estos no importan ya que NGINX limita la velocidad antes de que llegue a Discourse, ¿verdad?

Así es como parece por mis registros de nginx.

Mi solución a corto plazo es agregar mi dirección IP a la lista de IP locales, para que pase NGINX. Supongo que lo que hay que hacer es eliminar la plantilla ratelimited para que estos tengan algún significado.

2 Me gusta

Advertencia sobre firewall y proxy :warning:

Si estás ejecutando un proxy inverso mal configurado, Discourse puede pensar que todas las solicitudes provienen de una única dirección IP, es muy probable que alcances los límites de velocidad pronto. Asegúrate de configurar tu proxy inverso para que reenvíe la IP correctamente.

En nuestra configuración, canalizamos todas las llamadas a la API a través de un proxy. Este proxy maneja la autenticación y muchas otras cosas antes de consultar a veces a Discourse.

¿Cuál es la forma recomendada (¿encabezado específico?) de reenviar la dirección IP del solicitante original?

Relacionado

1 me gusta

¿Alguien podría ayudarme a entender esta configuración, por favor?

¿Estoy en lo cierto al pensar que esto ya está configurado en 1 y que los límites de tasa ya están configurados por defecto por usuario en lugar de por dirección IP (si el usuario es TL1 o superior)?

1 me gusta

en realidad no existía para que yo especificara una o más de estas configuraciones.

mi script siempre respetó la cabecera Retry-After, como podemos ver en la línea original 101;

retry_after = r.headers.get("Retry-After")

sin embargo, esta cabecera se estaba volviendo innecesariamente grande ya que programo múltiples unidades de servicio para que este mismo script se ejecute en diferentes momentos del día.

Por lo tanto, múltiplos de algunas de estas configuraciones de la entrega mejorada de correo electrónico predeterminada a través de mail-receiver, lo cual sigue siendo importante.