Wenn eine Seite eine Anmeldung erfordert, wird kein Banner „Seite ist überlastet" angezeigt, da kein anonymes Zugreifen möglich ist

Ab und zu erhalten wir diese Benachrichtigung am oberen Rand unseres Forums:

Aufgrund extremer Auslastung wird dies vorübergehend so angezeigt, wie es ein abgemeldeter Benutzer sehen würde.

Ich habe dazu einige Beobachtungen und Fragen:

Erstens scheint der Server nicht unter extremer Last zu stehen. Das letzte Mal, als ich die Warnung sah, zeigte das Server-Monitoring, dass die CPU-Auslastung maximal 24 % betrug, die Speichernutzung knapp über 50 % lag usw. Soweit ich weiß, gab es für die Benutzer keine spürbare Leistungsverschlechterung. Ich frage mich also: Was ist der Schwellenwert für diese Warnung, und ist er angemessen kalibriert?

Zweitens und für mich wichtiger: Das von mir betriebene Forum ist vollständig privat. Abgemeldete Benutzer können nichts außer der Anmeldeseite sehen. Die Benachrichtigung ist also unzutreffend, d. h. die Seite wird nicht so angezeigt, wie sie ein abgemeldeter Benutzer sehen würde, denn ein solcher Benutzer könnte sie überhaupt nicht sehen. Dies hat mehrmals zu Verwirrung geführt, da man annahm, die Beiträge unseres privaten Forums seien plötzlich für nicht autorisierte Benutzer zugänglich. Ich selbst war beim ersten Anblick ziemlich beunruhigt, und von Zeit zu Zeit bekomme ich von Benutzern Fragen dazu.

Vielleicht sollte diese Warnung umformuliert werden? Oder für private Foren geändert/deaktiviert werden?

Ist es möglich, sie für ein bestimmtes Forum zu deaktivieren?

3 „Gefällt mir“

Hallo @meriksson

Zur Info: Diese Benachrichtigung wird über einen Cookie ausgelöst:

if ($.cookie("dosp") === "1") {
        $.removeCookie("dosp", { path: "/" });
        notices.push(
          Notice.create({
            text: I18n.t("forced_anonymous"),
            id: "forced-anonymous"
          })
        );
      }

Referenz:

Eine Suche nach diesem Cookie auf GitHub ergibt:

Wo force_anon hier zu finden ist:

 def initialize(app, settings = {})
      @app = app
    end

    def call(env)
      helper = Helper.new(env)
      force_anon = false
      if helper.should_force_anonymous?
        force_anon = env["DISCOURSE_FORCE_ANON"] = true
        helper.force_anonymous!
      end

Referenz:

Siehe auch:

 MIN_TIME_TO_CHECK = 0.05
 ADP = "action_dispatch.request.parameters"

 def should_force_anonymous?
        if (queue_time = @env['REQUEST_QUEUE_SECONDS']) && get?
          if queue_time > GlobalSetting.force_anonymous_min_queue_seconds
            return check_logged_in_rate_limit!
          elsif queue_time >= MIN_TIME_TO_CHECK
            if !logged_in_anon_limiter.can_perform?
              return check_logged_in_rate_limit!
            end
          end
        end

   false
end
4 „Gefällt mir“

Das ist ein guter Punkt, @sam. Auf einer vollständig privaten Seite wäre der Text verwirrend und möglicherweise auch nicht korrekt.

4 „Gefällt mir“

Diese Warnung erscheint, wenn NGINX eine Anfrage an Unicorn (den App-Server) weiterleitet und wir eine erhebliche Verzögerung feststellen.

Beispiel (übertrieben):

  • NGINX sagt: … Hey, hier ist eine Anfrage, die ich um 13:00 Uhr von einem Benutzer erhalten habe.
  • Eine Stunde vergeht.
  • Der App-Server erhält die Anfrage … oh je, es hat eine Stunde gedauert, bis ich sie bekommen habe … ich muss überlastet sein.

Den Schwellenwert können Sie mit diesen beiden Einstellungen steuern:

DISCOURSE_FORCE_ANONYMOUS_MIN_QUEUE_SECONDS und DISCOURSE_FORCE_ANONYMOUS_MIN_PER_10_SECONDS

Am wichtigsten ist: Wenn Ihr Server viel zusätzliche Kapazität hat, fügen Sie mehr Unicorn-Prozesse hinzu, indem Sie UNICORN_WORKERS erhöhen.

Wenn eine Seite eine Anmeldung erfordert, sollten wir die Warnung meiner Meinung nach durch etwas Schwerwiegenderes ersetzen (blauer Bildschirm, Sie sind rate-limitiert).

Dies ist das erste Mal, dass ich von einer Seite höre, die eine Anmeldung erfordert und dieses Rate-Limit erreicht. Ich stimme zu, dass wir hier etwas besser werden sollten.

4 „Gefällt mir“

Ich werde hier noch auf eine weitere unabhängige Beschwerde warten.

Das Beste, was wir unter extremer Last für Seiten, die eine Anmeldung erfordern, tun können, ist, einfach einen blauen Bildschirm mit der Meldung „Seite ist überlastet, versuchen Sie es später erneut

3 „Gefällt mir“

Das passiert in einer sehr kleinen privaten Discourse-Community, die ich häufig besuche. Es wurde mir ein 502 Bad Gateway Nginx-Fehler angezeigt, danach konnte die Seite gar nicht mehr geladen werden. Schließlich wurde sie geladen, zeigte mir aber die oben genannte Banner-Meldung.

1 „Gefällt mir“

Ich denke, es ist sicher, dies jetzt hinzuzufügen. Wenn eine Seite, die eine Anmeldung erfordert, überlastet ist, wird das Hinzufügen weiterer Benutzer die Situation für diese nicht verbessern.

3 „Gefällt mir“

Sicher … wir integrieren es in unser nächstes Release.

3 „Gefällt mir“