Discourse wird mit 3 verschiedenen globalen Ratenlimits ausgeliefert, die von Site-Administratoren konfiguriert werden können.
Globale Ratenlimits pro IP
Diese Limits gelten für jede eindeutige IP-Adresse, die die Discourse-Anwendung aufruft. (Dateien, die direkt aus dem Dateisystem oder dem CDN ausgeliefert werden, sind ausgenommen)
Standardmäßig ist dieses Ratenlimit aktiviert. Sie können es deaktivieren oder in einen Berichtsmodus versetzen.
DISCOURSE_MAX_REQS_PER_IP_MODE: Standard block, dieses Ratenlimit ist standardmäßig aktiv. (weitere Optionen sind warn, warn+block und none)
DISCOURSE_MAX_REQS_PER_IP_PER_MINUTE: Anzahl der Anfragen pro IP pro Minute (Standardwert ist 200)
DISCOURSE_MAX_REQS_PER_IP_PER_10_SECONDS: Anzahl der Anfragen pro IP pro 10 Sekunden (Standardwert ist 50)
DISCOURSE_MAX_ASSET_REQS_PER_IP_PER_10_SECONDS: Anzahl der Asset-Anfragen (Avatare/CSS) pro IP pro 10 Sekunden (Standardwert ist 200)
DISCOURSE_MAX_REQS_RATE_LIMIT_ON_PRIVATE: Soll das Ratenlimit auf private IPs angewendet werden, die auf Discourse zugreifen? Standardmäßig false.
DISCOURSE_SKIP_PER_IP_RATE_LIMIT_TRUST_LEVEL: Nutzt Ratenlimits pro Benutzer anstelle von Ratenlimits pro IP für Benutzer mit diesem Vertrauenslevel oder höher (Standardwert 1)
DISCOURSE_MAX_REQS_PER_IP_EXCEPTIONS: Eine durch Leerzeichen getrennte Liste von IP-Adressen oder CIDR-Blöcken, die von der Ratenlimitierung pro IP ausgenommen sind. Beispiel: 14.15.16.32/27 216.148.1.2
Benutzer-API-Ratenlimits
Die mobilen Anwendungen beziehen pro Gerät einen Benutzer-API-Schlüssel, um im Namen eines Benutzers auf Discourse zuzugreifen (unter Verwendung eines offenen Protokolls). Diese API-Schlüssel sind sehr stark limitiert.
DISCOURSE_MAX_USER_API_REQS_PER_MINUTE: Standard 20
DISCOURSE_MAX_USER_API_REQS_PER_DAY: Standard 2880
Admin-API-Ratenlimits
Administrative API-Schlüssel können über die Seite yoursite.com/admin/api/keys generiert werden. Diese Schlüssel können im Namen von Benutzern agieren, erfordern jedoch administrative Berechtigungen zur Generierung. Es gilt ein Limit von 60 Anfragen pro Minute, das über alle Schlüssel hinweg geteilt wird.
Self-Hosted-Benutzer können dies in ihrer app.yml-Datei ändern. Gehostete Kunden müssen sich an ihren Hosting-Anbieter wenden.
DISCOURSE_MAX_ADMIN_API_REQS_PER_MINUTE: 60
Data Explorer Plugin-API-Ratenlimits
DISCOURSE_MAX_DATA_EXPLORER_API_REQ_MODE: Standard warn, dieses Ratenlimit ist standardmäßig aktiv. (weitere Optionen sind block, warn+block und none)
DISCOURSE_MAX_DATA_EXPLORER_API_REQS_PER_10_SECONDS: 2
Hinweis: Über die Data-Explorer-Benutzeroberfläche getätigte Anfragen werden nicht auf das Ratenlimit angerechnet.
Was sollte ich tun, wenn ich ein Ratenlimit erreiche und gedrosselt werde?
Wenn Sie die API programmgesteuert nutzen und eine Drosselungsantwort mit dem Statuscode 429 erhalten, sollten Sie dies respektieren und verlangsamen.
Als Endbenutzer sollten Sie in der Regel keine Ratenlimits erleben. Falls doch, verlangsamen Sie Ihr Tempo. Sie könnten es auslösen, indem Sie schnell 50 Tabs öffnen oder etwas Ähnliches tun.
Warnung vor Firewall und Proxy! 
Wenn Sie einen fehlerhaft konfigurierten Reverse-Proxy betreiben, könnte Discourse davon ausgehen, dass alle Anfragen von einer einzigen IP-Adresse stammen. Es ist sehr wahrscheinlich, dass Sie dann frühzeitig Ratenlimits erreichen. Stellen Sie sicher, dass Ihr Reverse-Proxy die IP-Adresse korrekt weiterleitet.
Wie ändere ich diese Limits?
Um die Limits anzupassen, fügen Sie die gewünschte Änderung in den env-Abschnitt Ihrer app.yml-Datei ein.
Wenn Sie von Discourse gehostet werden und einen Enterprise-Plan nutzen, wenden Sie sich an team@discourse.org, falls Sie eines dieser Limits anpassen müssen.
Globale Ratenlimits können bei den Plänen Free, Starter, Pro oder Business nicht angepasst werden.