Rate Limiter-Probleme beim Hochladen einer Backup-Datei / kann Rate Limiter nicht deaktivieren

Ich ziehe eine bestehende Discourse-Instanz von ihrem aktuellen Standort auf eine AWS EC2-VM um.
Die Website befindet sich hinter Amazon Load Balancern. Ich habe bereits erfolgreich die set_real_ip_from-Direktiven in app.yml angepasst, damit NGINX die IPs des Load Balancers kennt. Ich weiß, dass dies funktioniert, da ich meine echte IP-Adresse sehe, wenn ich die letzte IP eines Benutzers überprüfe.

Wenn ich jedoch versuche, das 375 MB große Backup vom alten Server hochzuladen, beginnt die neue Website, 429-Fehler auszugeben, wenn die Datei etwa zu 35 % hochgeladen ist, und der Upload-Vorgang schlägt fehl. Die Header in den 429-Antworten identifizieren “discourse-rate-limit-error-code: id_10_secs_limit”.

Das fand ich überraschend. Ich hatte das Entwicklertools-Fenster meines Browsers im Tab “Netzwerk” geöffnet und sah viele kleine Chunks, die ziemlich schnell hochgeladen wurden (ich glaube, es waren 5 MB). Ich habe eine schnelle 200-Mbit/s-Internetverbindung, also ist es vielleicht einfach zu schnell für die Standardeinstellungen des Ratenbegrenzers? Oder vielleicht wurde erwartet, dass Administratoraufgaben normalerweise von einem privaten Netzwerk aus erledigt werden (was in meinem AWS-Setup nicht möglich ist)?

Aber warten Sie, es gibt noch mehr! Ich habe versucht, den Ratenbegrenzer zu deaktivieren, indem ich die Zeile “templates/web.ratelimited.template.yml” aus app.yml auskommentiert und die App neu erstellt habe, aber das hat nicht funktioniert. Ich erhielt immer noch 429-Fehler, als meine Datei etwa zu 35 % hochgeladen war.

Also habe ich schnell die untenstehenden Umgebungsvariablen zur app.yml-Datei hinzugefügt, neu erstellt und konnte endlich das Backup zum Wiederherstellen hochladen.

DISCOURSE_MAX_REQS_PER_IP_MODE: none
DISCOURSE_MAX_REQS_PER_IP_PER_10_SECONDS: 1000

Ich glaube, das sind Einstellungen für den Ratenbegrenzer, daher war es seltsam, etwas zu sehen, das auf diese Einstellungen reagierte, obwohl der Ratenbegrenzer angeblich deaktiviert war.

Fazit: Ich hätte gerne einige Hinweise dazu:

  1. Sollte der Ratenbegrenzer Backup-Uploads auf diese Weise blockieren?
  2. Warum wurde der Ratenbegrenzer nicht deaktiviert, als ich diese Zeile auskommentiert und die App neu erstellt habe?

Danke!

Wenn Sie versuchen, ein Backup hochzuladen, verwenden Sie scp oder legen Sie es auf S3 ab.

Meinen Sie mit „scp verwenden“, die Datei direkt auf die VM zu übertragen und sie dann in einen bestimmten Ordner zu legen, in dem Discourse sie finden kann? Ich habe das noch nicht versucht, aber es sieht so aus, als wäre dieser bestimmte Ordner /var/discourse/shared/standalone/backups/default?

Und würde die Verwendung von S3 wirklich die Amazon Load Balancer umgehen?

Danke!

1 „Gefällt mir“

Wenn dieser Ordner existiert, dann ist das wahrscheinlich der richtige Ort.

Das würde sie.

1 „Gefällt mir“

Der Standard-Wiederherstellungsleitfaden sieht die Erstellung des Ordners default vor, sodass er auch dann manuell erstellt werden kann, wenn er nicht existiert.

Ref: Restore a backup from the command line

2 „Gefällt mir“