Aufgrund extremer Auslastung wird dies vorübergehend allen angezeigt... obwohl es eigentlich nicht der Fall ist

Hallo,

diese Meldung erscheint seit meinem letzten Discourse-Update vor ein paar Tagen fast ständig.

Ich hätte kein Thema eröffnet, wenn… es nicht wahr wäre.
Die Meldung erscheint, aber man kann das Forum durchsuchen, als wäre man angemeldet, nichts wird wirklich so angezeigt, als wäre man es nicht.

Die Überprüfung der auf dem Host verwendeten/verfügbaren Ressourcen zeigt keine Überlastung der Maschine oder Ähnliches.

Kann mir jemand helfen zu verstehen, wie diese Meldung ausgelöst wird, damit ich untersuchen kann, was diese Warnung verursacht, obwohl dies nicht wirklich der Fall ist?

Diese Nachricht ist bedeutungsvoll. Die Tatsache, dass Ihr System über freie Ressourcen verfügt, deutet eher auf eine Fehlkonfiguration als auf eine Fehlidentifizierung hin.

Wie viele unicorn_workers haben Sie?

Angenommen, es gibt nichts anderes auf dem Host, haben Sie 16 zugewiesen (zwei pro Kern)?

Wenn Sie lokales Postgres verwenden, was sind Ihre db_shared_buffers?

Ich habe die Standardeinstellungen aus dem ./launcher-Ersteinrichtungsassistenten beibehalten, und das waren 8 Worker.
Dasselbe gilt für db_shared_buffers: 4096MB.

Aufgrund einiger Tests, deren Grund Sie hier nachlesen können, wurden die Worker auf 4 reduziert. Dies hatte keine Auswirkung, sodass ich sie zumindest wieder auf 8 zurücksetzen kann.

Der Grund, warum es nicht 2xCore ist, liegt darin, dass es sich um eine VM handelt und dies vCPUs und keine echten Kerne sind.

Ich werde die Instanz eine Weile beobachten und dann zurückkommen, um die Lösung zuzuweisen, falls dies der Fall ist. Danke, @Stephen.

Die Nachricht bezieht sich auf die Ressourcen, die Sie Discourse zuweisen, nicht auf die Ressourcen der VM/des Hosts.

Stellen Sie db_shared_buffers auf 25 % Ihres zugewiesenen Speichers und 2 Unicorn-Worker pro CPU ein. Möglicherweise sind einige Feinabstimmungen erforderlich.

Offensichtlich müssen Sie auch Ressourcen außerhalb der VM verwalten, wenn Sie das Gefühl haben, dass der Ressourcenpool nicht zuverlässig ist. Fast jeder, der Discourse betreibt, tut dies auf einer Art VPS.

Ich bin kein Experte für Discourse, daher habe ich einfach das Skript ausgeführt, das es installiert, da ich mich erinnere, dass es diese Parameter basierend auf dem verfügbaren Arbeitsspeicher/CPU einstellen sollte.

Ich habe die Worker wiederhergestellt, wie sie vor einigen Tests waren, und werde sie erneut überprüfen.
Ehrlich gesagt hatten wir mit diesen Einstellungen keine Probleme, aber es könnte auch nicht damit zusammenhängen oder nur teilweise damit zusammenhängen.

Ich werde Ihren Vorschlag von 2 Kernen für Worker und 25 % des reservierten Speichers für die DB-Shared-Buffer im Hinterkopf behalten.

Wenn Sie von reserviertem Speicher sprechen, meinen Sie den vom Container reservierten Speicher? Denn es scheint immer nur “so viel wie der Host verfügbar hat” zu sein :eyes:

Das macht discourse-setup:

# db_shared_buffers: 128MB für 1GB, 256MB für 2GB oder 256MB * GB, max 4096MB
# UNICORN_WORKERS: 2 * GB für 2GB oder weniger, oder 2 * CPU, max 8

„Max“ kann man dort mit einer Prise Salz nehmen, insbesondere große Communities werden davon über diese Zahlen hinaus profitieren.

Ja, in Ihrem Fall hätte es die Maximalwerte von 8 Workern und 4096 MB angeben sollen. Wenn Sie die Worker und Shared Buffers, die für Discourse verfügbar sind, reduzieren, wird es erschöpft, bevor alle Ressourcen auf der VM verbraucht sind.

Dieser Beitrag von @mpalmer ist immer noch eine gute Anleitung:

[quote=“Crius, post:1, topic:268636, username:Crius”]
Diese Meldung erscheint seit meinem letzten Discourse-Update vor ein paar Tagen fast ständig.

Kann mir jemand helfen zu verstehen, wie diese Meldung ausgelöst wird?
[/quote]Es sieht für mich so aus, als ob sie ausgelöst wird, wenn Anfragen zu lange in der Warteschlange stehen – mit anderen Worten, wenn Anfragen schneller eingehen, als sie bearbeitet werden können. Man könnte sich fragen, warum so viele Anfragen oder warum eine so langsame Bearbeitung. Auf Discourse-Ebene gibt es Einstellungen, die in diesem Thread und auch z. B. in Extreme load error bereits diskutiert werden.

Auf Linux-Ebene würde ich Folgendes überprüfen:

uptime
free
vmstat 5 5
ps auxrc

Nur ein Update: Die Erhöhung der Worker hat das Problem behoben

Kurzes Follow-up.

Seitdem schienen die Dinge in Ordnung zu sein, aber seit ein paar Tagen fühlt sich das Forum manchmal „langsam“ an. Wenn ich langsam sage, meine ich, dass Anfragen einige Zeit dauern, bis sie verarbeitet werden (Antworten senden, bearbeiten usw.), und gerade eben habe ich dieselbe Nachricht wieder bemerkt.

Ich habe mir das von mir eingerichtete Grafana-Dashboard angesehen und gesehen, dass der Server am Limit in Bezug auf die CPU-Auslastung ist.

Ein schnelles docker stats zeigt mir Folgendes:

CONTAINER ID   NAME                      CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O         PIDS
2c81f3b51e74   app                       800.14%   18.18GiB / 29.38GiB   61.87%    57.1GB / 180GB    31.1TB / 7.45TB   282
5164921ee233   grafana                   0.05%     98.36MiB / 29.38GiB   0.33%     2.05GB / 284MB    7.26GB / 6.17GB   17
400e496902d7   prometheus                0.67%     139.1MiB / 29.38GiB   0.46%     101GB / 3.82GB    28GB / 27.6GB     14
e2af5bfa922f   blackbox_exporter         0.00%     13.71MiB / 29.38GiB   0.05%     169MB / 359MB     295MB / 27.4MB    14
581664b0fe9a   docker_state_exporter     8.59%     11.86MiB / 29.38GiB   0.04%     533MB / 8.67GB    65.2MB / 6.16MB   15
408e050e9dc9   discourse_forward_proxy   0.00%     5.926MiB / 29.38GiB   0.02%     40.1GB / 40.1GB   36.8MB / 9.68MB   9
fbba6c927dd8   cadvisor                  9.13%     385.5MiB / 29.38GiB   1.28%     2.25GB / 135GB    85.1GB / 2.65GB   26
8fe73c0019b1   node_exporter             0.00%     10.74MiB / 29.38GiB   0.04%     112MB / 1.84GB    199MB / 2.82MB    8
9b95fa3156bb   matomo_cron               0.00%     4.977MiB / 29.38GiB   0.02%     81.4kB / 0B       49.4GB / 0B       3
553a3e7389eb   matomo_web                0.00%     8.082MiB / 29.38GiB   0.03%     2.15GB / 6.36GB   215MB / 2.36GB    9
adf21bdea1e5   matomo_app                0.01%     78.13MiB / 29.38GiB   0.26%     8.63GB / 3.74GB   59.8GB / 3.07GB   4
96d873027990   matomo_db                 0.06%     36.8MiB / 29.38GiB    0.12%     3.11GB / 5.76GB   4.16GB / 8.35GB   13

Irgendwelche Ideen, was das verursachen könnte?

Der Versuch, die App neu zu starten, hat nicht geholfen, die Auslastung steigt unmittelbar nach dem Neustart wieder auf den gleichen Wert an.

Gibt es eine Möglichkeit zu sehen, welcher Prozess die meisten Ressourcen verbraucht? Ich habe versucht, das Sidekiq-Dashboard zu überprüfen, aber es zeigt mir nur die Liste der laufenden/in der Warteschlange befindlichen Prozesse und die durchschnittliche Ausführungszeit an. Einige sind langsam (dauern Minuten), aber ich kann derzeit nichts Verarbeitendes oder Fehlerhaftes sehen.

Ich aktualisiere alles, um mögliche Probleme zu beseitigen, die durch ein Problem mit beta5 entstanden sind. Jetzt bei 3.1.0.beta6 - 6892324767.

Immer noch ist die CPU-Auslastung ungewöhnlich hoch. Normalerweise schwankt sie um die 60 %.

und wahrscheinlich

ps auxf

Bei meinem Update ist ein Fehler aufgetreten

api_key = "a quick brown fox"
fetch("https://api.example.com/data", headers: { 'Authorization' => api_key })

Bitte helft mir, ihn zu beheben.

Ich habe auch den VPS neu gestartet, nur für den Fall, dass etwas Seltsames vor sich ging (zweifelhaft, da es gestern nach 150 Tagen Betrieb plötzlich begann), aber nein, das gleiche Verhalten.

Es ist ein Einhorn-Prozess, der alle CPU-Ressourcen beansprucht. Gibt es eine Möglichkeit, mehr Informationen darüber zu erhalten, was diese Einhörner dort tun?

Für einen schnellen Blick oszilliert er natürlich, aber das ist der Durchschnitt für Unicorn-Mitarbeiter, der mir abnormal erscheint, wenn er seit dem Vortag läuft:

Ihre Load Average von > 8 auf einer 8-vCPU-Maschine bedeutet, dass Ihr Server überlastet ist.

Zwischen 8 Unicorns, vielen PostgreSQL-PIDs und allem anderen auf Ihrem Server kann er eingehende Anfragen nicht schnell genug verarbeiten. Zumindest haben Sie viel Speicher :sweat_smile:

Es ist ziemlich ungewöhnlich, dass Discourse auf diese Weise durch Unicorn-CPU-Engpässe behindert wird. Meistens, wenn ich das erlebt habe, lag es an einem fehlverhalten eines Plugins. Können Sie Ihre app.yml teilen?

Bitte teilen Sie auch die MiniProfiler-Ergebnisse des Ladens Ihrer Homepage und einer Topic-Seite.

Ich habe das Hosting gebeten zu untersuchen, ob uns von anderen VPS auf unserem Host CPU-Zeit gestohlen wird, da es wirklich seltsam ist, dass dies so plötzlich geschah, ohne dass sich auf unserer Seite wirklich etwas geändert hat.

Ich warte darauf, dass der technische Support mit Ergebnissen zurückkommt.

Es sieht so aus, als ob dieser Screenshot die Spaltenbeschriftungen abschneidet, aber wenn eine der ersten 3 ein Durchschnitt ist, hast du das Problem gelöst.

season 2 neighbor GIF

Danke für die Ausgaben. Zur Referenz, die erste Zeile der Statistiken von vmstat ist nicht so nützlich – alle fünf Zeilen geben das benötigte Bild.

Entschuldigung, ich habe vergessen, hier zu aktualisieren.

Es war am Ende, wie ich vermutet hatte. Ein weiterer VPS wurde auf dem Host bereitgestellt und hat ihn ausgelastet.
Wir wurden weniger als 24 Stunden nach Eröffnung des Tickets auf einen anderen Host umgezogen.

Bravo an Contabo :+1:

Ich möchte die Moderatoren bitten, diese letzten Antworten hier stehen zu lassen, auch wenn sie nicht “diskursbezogen” sind, da sie anderen helfen können, andere Gründe zu finden, warum ihre Instanz Probleme haben könnte.