Discourse est livré avec 3 limites de débit globales différentes qui peuvent être configurées par les administrateurs du site.
Limites de débit globales par IP
Ces limites s’appliquent à chaque adresse IP unique qui accède à l’application Discourse. (les fichiers servis directement depuis le système de fichiers ou le CDN sont exclus)
Par défaut, cette limite de débit est activée, vous pouvez la désactiver ou la passer en mode de rapport.
DISCOURSE_MAX_REQS_PER_IP_MODE : par défaut block, cette limite de débit s’applique dès l’installation. (les autres options sont warn, warn+block et none)
DISCOURSE_MAX_REQS_PER_IP_PER_MINUTE : nombre de requêtes par IP par minute (la valeur par défaut est 200)
DISCOURSE_MAX_REQS_PER_IP_PER_10_SECONDS : nombre de requêtes par IP par 10 secondes (la valeur par défaut est 50)
DISCOURSE_MAX_ASSET_REQS_PER_IP_PER_10_SECONDS : nombre de requêtes d’actifs (avatars/css) par IP par 10 secondes (la valeur par défaut est 200)
DISCOURSE_MAX_REQS_RATE_LIMIT_ON_PRIVATE : la limite de débit doit-elle s’appliquer aux IP privées accédant à Discourse ? La valeur par défaut est false.
DISCOURSE_SKIP_PER_IP_RATE_LIMIT_TRUST_LEVEL : utiliser les limites de débit par utilisateur plutôt que par IP pour les utilisateurs ayant ce niveau de confiance ou plus (par défaut 1)
DISCOURSE_MAX_REQS_PER_IP_EXCEPTIONS : une liste d’adresses IP ou de blocs CIDR séparés par des espaces à exempter de la limitation de débit par IP. Par exemple : 14.15.16.32/27 216.148.1.2
Limites de débit de l’API utilisateur
Les applications mobiles acquièrent une clé API utilisateur par appareil pour accéder à Discourse au nom d’un utilisateur (en utilisant un protocole ouvert). Ces clés API sont très strictement limitées.
DISCOURSE_MAX_USER_API_REQS_PER_MINUTE : par défaut 20
DISCOURSE_MAX_USER_API_REQS_PER_DAY : par défaut 2880
Limites de débit de l’API administrateur
Les clés API administratives peuvent être générées via la page votresite.com/admin/api/keys. Ces clés peuvent agir au nom des utilisateurs, mais nécessitent des privilèges d’administrateur pour être générées. Il y a une limite de 60 requêtes par minute, partagée entre toutes les clés.
Les utilisateurs auto-hébergés peuvent modifier cela dans leur fichier app.yml. Les clients hébergés devront contacter leur fournisseur d’hébergement.
DISCOURSE_MAX_ADMIN_API_REQS_PER_MINUTE : 60
Limites de débit de l’API du plugin Data Explorer
DISCOURSE_MAX_DATA_EXPLORER_API_REQ_MODE : par défaut warn, cette limite de débit s’applique dès l’installation. (les autres options sont block, warn+block et none)
DISCOURSE_MAX_DATA_EXPLORER_API_REQS_PER_10_SECONDS : 2
Note : Les requêtes effectuées via l’interface utilisateur de Data Explorer ne comptent pas dans la limite de débit.
Que dois-je faire si j’atteins une limite de débit et suis ralenti ?
Si vous consommez l’API de manière programmatique et que vous recevez en retour une réponse de limitation avec un code de statut 429, vous devez la respecter et ralentir.
En tant qu’utilisateur final, vous ne devriez pas vraiment rencontrer de limites de débit ; si c’est le cas, ralentissez. Vous pourriez les déclencher en ouvrant 50 onglets très rapidement ou en faisant quelque chose de similaire.
Avertissement concernant le pare-feu et le proxy ! 
Si vous exécutez un proxy inverse mal configuré, Discourse peut penser que toutes les requêtes proviennent d’une seule adresse IP, il est très probable que vous atteigniez les limites de débit rapidement. Assurez-vous de configurer votre proxy inverse pour transmettre correctement l’IP.
Comment modifier ces limites ?
Pour modifier les limites, ajoutez le changement souhaité dans votre fichier app.yml, dans la section env.
Si vous êtes hébergé par Discourse et que vous êtes sur un plan Enterprise, contactez team@discourse.org si vous avez besoin d’ajuster l’une de ces limites.
Les limites de débit globales ne sont pas ajustables sur les plans Free, Starter, Pro ou Business.