Throttle-Neuberechnung, um zu verhindern, dass der Speicher ausgeht?

Ich versuche, 45.000 Beiträge neu zu backen, weil ich die S3 CDN-URL geändert habe, und es geht immer wieder der Speicher aus und beendet den Vorgang.

Ich habe dies über die Einrichtung einer Swap-Datei gelesen…

Die ersten beiden Befehle funktionierten einwandfrei…

  1. Eine leere Swap-Datei erstellen

    install -o root -g root -m 0600 /dev/null /swapfile

  2. Eine 2-GB-Datei namens „swapfile“ schreiben

    dd if=/dev/zero of=/swapfile bs=1k count=2048k

Aber dann erhielt ich bei mkswap /swapfile einen Fehler…

mkswap-Fehler: swapfile wird verwendet, kann keinen Swap-Bereich erstellen

Ich habe stattdessen Folgendes versucht…

swapoff /swapfile && rm /swapfile

und erhielt diesen Fehler…

swapoff: Nicht Superuser

Ich bin auf einem Digital Ocean Droplet, ich habe also anscheinend nicht die notwendigen Berechtigungen dafür?

Da ich auf diese Hindernisse stieß, habe ich stattdessen versucht, nur ungebackene Beiträge neu zu backen, indem ich Folgendes ausgeführt habe:

rake posts:rebake_uncooked_posts

Es werden mehrere hundert, vielleicht ein paar tausend, wenn ich Glück habe, ausgeführt und dann wieder beendet. Nachdem ich es seit gestern beaufsichtigt habe, bin ich halb fertig gebacken. :zwinker:

Gibt es eine Möglichkeit, einen Neu-Back-Befehl auszuführen, der gedrosselt ist? Es ist mir egal, ob es eine Weile dauert, über Nacht oder was auch immer, ich möchte nur, dass es aufhört zu fehlschlagen.

Jede Hilfe wäre sehr willkommen.

Seltsamerweise habe ich den ungekochten Durchlauf erneut gestartet, während ich das alles aufgeschrieben habe. Ich bin zu einem langen Mittagessen mit Freunden aufgebrochen und kam zurück, als er zu 100 % fertig war. Ich bin mir nicht sicher, ob die Swap-Datei endlich zu funktionieren begann oder ob es nur ein Zufall mit geringer Auslastung war, aber …

fertig, endlich!

Vielleicht kann eine Antwort jemand anderem oder mir beim nächsten Versuch helfen.

Unter Ubuntu:

Sudo -i

Unter Debian

Su -

1 „Gefällt mir“

Danke. Ich bin mir nicht sicher, ob ich es richtig gemacht habe oder nicht.

Das sieht nicht richtig aus. Welchen Anweisungen folgen Sie?

Und warum erstellen Sie den Swap innerhalb des Containers? Swap soll auf dem Host und nicht innerhalb des Containers erstellt werden.

Weil ich nur geringfügig weiß, was ich tue. :wink:

Also betrifft das die ubuntu:-Basisebene und nicht die Ebenen ubuntu:/var/discourse oder ubuntu-app:/var/www/discourse?

Irgendwelche Ideen zum Rebake-Throttling?

1 „Gefällt mir“

Ich habe noch nie gesehen, dass Re-Bake gedrosselt wird. Es ist asynchron, es stellt die Jobs in eine Warteschlange, die im Hintergrund verarbeitet werden.

1 „Gefällt mir“

OK, danke. Meiner hat vorerst mit dem erneuten Backen aufgehört, also schätze ich mich glücklich und höre auf, daran herumzuspielen. :smiley:

Warnung :warning:: Führen Sie Dinge auf einer Produktionsseite nicht blindlings durch, es besteht eine hohe Wahrscheinlichkeit, dass Dinge schiefgehen, ohne dass es eine wirkliche Möglichkeit zur Wiederherstellung gibt.

Nein, es ist nicht die ubuntu:-Ebene.

Haben Sie vor dem Versuch, Swap zu erstellen, ein ./launcher enter app ausgeführt? Wenn ja, hätten Sie das nicht tun sollen.

Wenn Sie sich zum ersten Mal auf Ihrem Server anmelden, sind Sie der Host. Wenn Sie app eingeben, führen Sie Aktionen innerhalb des Containers aus.

Der Swap muss auf dem Host erstellt werden, die Anwendung befindet sich im Container. Dies ist der Ort, auf den Sie zugreifen, um den Rebake-Befehl auszuführen.

OK, danke für die Anleitung.

Unser Forum ist nur eine Gruppe von Freunden und hat gute Backups, also wenn ich es für etwa eine Woche „röste“ (offline nehme), müssen wir eben GroupMe ertragen. :wink:

Das bedeutet, dass Sie bereits eine Swap-Datei haben, sie heißt /swapfile und sie wird verwendet.

Wenn Sie sie vergrößern möchten, können Sie Ihren Container stoppen, sie dann aushängen und dann den dd-Befehl verwenden, um sie zu vergrößern, und dann den mkswap-Befehl.

Wenn jemand anderes dies liest: Die Methode, die ich anwende, besteht darin, grep swap discourse-setup auszuführen und sich die dortigen Befehle anzusehen. Es ist eine etwas einfachere Version dessen, was zu tun ist.

3 „Gefällt mir“

Ich diene oft als warnendes Beispiel.

Danke für die Ergänzung.

1 „Gefällt mir“

Ich weiß nicht, wie es Ihnen geht, aber ich bekam während eines langen Rebake-Prozesses wiederholt einen Speicherüberlauf (Out of Memory, OOM). Das Erstellen einer 2 GB großen Auslagerungsdatei (Swap) hat die Situation verbessert (mehr Beiträge wurden nachbearbeitet), aber nach einer Weile trat immer noch ein OOM auf. Ich habe den Swap auf 4 GB erhöht und konnte alle meine Beiträge nachbearbeiten.

Ich wusste nichts über Swap-Dateien außer diesem Leitfaden Create a swapfile for your Linux server, aber ChatGPT war sachkundig genug, um mir ohne Probleme bei der Erhöhung meines Swaps zu helfen.

3 „Gefällt mir“

Ein Problem für mich ist, dass ich kein gutes Gefühl dafür habe, was in welchem Bereich getan werden muss. Innerhalb oder außerhalb des Containers oder innerhalb oder außerhalb der Anwendung. Ich versuche, mir gute Notizen zu machen und habe mentale Abkürzungen für die Dinge, die ich wieder verwenden werde. Aber gerade wenn ich anfange, es zu verstehen, bin ich mit dem, was ich tun muss, fertig und werde es erst in weiteren 6 bis 12 bis 18 Monaten wieder anfassen. Dann muss ich es quasi neu lernen.

klingt wie die ganze Lebensgeschichte jedes Systemadministrators :joy:

Meine Lösung ist, Notizen zu machen und dann hier im Meta einen kleinen Leitfaden zu erstellen

Ich mache es zu einem Wiki, damit andere es bearbeiten können, wenn sie einen Fehler oder eine Nachlässigkeit finden, und wenn ich das nächste Mal dasselbe tun muss…

1 „Gefällt mir“