Ajustes disponibles para límites de velocidad globales y throttling

Discourse vem com 3 limites de taxa globais diferentes que podem ser configurados pelos administradores do site.

Limites de taxa globais por IP

Estes limites se aplicam a cada endereço IP exclusivo que acessa a aplicação Discourse. (arquivos servidos diretamente do sistema de arquivos ou da CDN são excluídos)

Por padrão, este limite de taxa está ativado, você pode desativá-lo ou configurá-lo para um modo de relatório.

DISCOURSE_MAX_REQS_PER_IP_MODE: padrão block (bloquear), este limite de taxa se aplica imediatamente. (outras opções são warn (advertir), warn+block (advertir+bloquear) e none (nenhum))

DISCOURSE_MAX_REQS_PER_IP_PER_MINUTE: número de requisições por IP por minuto (o padrão é 200)

DISCOURSE_MAX_REQS_PER_IP_PER_10_SECONDS: número de requisições por IP a cada 10 segundos (o padrão é 50)

DISCOURSE_MAX_ASSET_REQS_PER_IP_PER_10_SECONDS: número de requisições de assets (avatares/css) por IP a cada 10 segundos (o padrão é 200)

DISCOURSE_MAX_REQS_RATE_LIMIT_ON_PRIVATE: o limite de taxa deve se aplicar a IPs privados acessando o Discourse? O padrão é false.

DISCOURSE_SKIP_PER_IP_RATE_LIMIT_TRUST_LEVEL: usar limites de taxa por usuário em vez de limites de taxa por IP para usuários com este nível de confiança ou superior (o padrão é 1)

DISCOURSE_MAX_REQS_PER_IP_EXCEPTIONS: uma lista separada por espaços de endereços IP ou blocos CIDR a serem isentos do limite de taxa por IP. Por exemplo: 14.15.16.32/27 216.148.1.2

Limites de taxa da API do Usuário

As aplicações móveis adquirem uma chave de API de usuário por dispositivo para acessar o Discourse em nome de um usuário (usando um protocolo aberto). Estas chaves de API são muito estritamente limitadas.

DISCOURSE_MAX_USER_API_REQS_PER_MINUTE: padrão 20
DISCOURSE_MAX_USER_API_REQS_PER_DAY: padrão 2880

Limites de taxa da API de Administrador

As chaves de API administrativas podem ser geradas através da página yoursite.com/admin/api/keys. Estas chaves podem operar em nome de usuários, mas exigem privilégios administrativos para serem geradas. Há um limite de 60 requisições por minuto, compartilhado entre todas as chaves.

Usuários auto-hospedados podem alterar isso em seu arquivo app.yml. Clientes hospedados precisarão entrar em contato com seu provedor de hospedagem.

DISCOURSE_MAX_ADMIN_API_REQS_PER_MINUTE : 60

Limites de taxa da API do Plugin Data Explorer

DISCOURSE_MAX_DATA_EXPLORER_API_REQ_MODE: padrão warn (advertir), este limite de taxa se aplica imediatamente. (outras opções são block (bloquear), warn+block (advertir+bloquear) e none (nenhum))

DISCOURSE_MAX_DATA_EXPLORER_API_REQS_PER_10_SECONDS: 2

Nota: As requisições feitas através da interface do Data Explorer não contam para o limite de taxa.

O que devo fazer se atingir um limite de taxa e for limitado?

Se você estiver consumindo a API programaticamente e receber uma resposta de limitação com código de status 429, você deve respeitá-la e diminuir a velocidade.

Como usuário final, você não deve realmente experimentar limites de taxa; se o fizer, diminua a velocidade. Você pode acioná-lo abrindo 50 abas rapidamente ou fazendo algo assim.

Aviso de Firewall e Proxy! :warning:

Se você estiver executando um proxy reverso que está mal configurado, o Discourse pode pensar que todas as requisições estão vindo de um único endereço IP, é muito provável que você atinja os limites de taxa rapidamente. Certifique-se de configurar seu proxy reverso para encaminhar o IP corretamente.

Como altero esses limites?

Para alterar os limites, adicione a alteração desejada ao seu arquivo app.yml na seção env.

> :discourse: Se você for hospedado pelo Discourse e estiver em um plano Enterprise, entre em contato com team@discourse.org se precisar ajustar algum desses limites.
>
> Os Limites de Taxa Globais não são ajustáveis nos planos starter, pro ou 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?
Discourse-topic-organizer causing "Slow down, too Many Requests from this IP Address"
How-to disable or tune rate limiting by ip address?
How to edit "hidden" site_settings?
Rate limit errors although IP is whitelisted
API rate limits
User API keys specification
Why semrushbot and ahrefsbot are blocked by default?
429 error when opening multiple topics
Remove the ip limits
Error code 429 when utilising a Zapier integration
Understanding /logs/report_js_error 429
Direct URL for the "email me a login link" feature
Do not see discourse/config/site_settings.yml to set USER API limits
Uncaught (in promise) error
Webhook connect to post comments to WordPress working unreliably
Changing/removing API rate limit with category creation
Enable user to Generate API key
Import posts through API (time delay)
You Have Performed this Action Too Many Times Error
Api call returns nothing when too many requests
Very slow discobot certificate generation on our server
API rate limits
Create and configure an API key
Fetch All Posts from a Topic Using the API
Discourse REST API Documentation
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
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
Issues when I enable Component, maybe Right Sidebar Blocks?
Direct URL for the "email me a login link" feature

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.