Dem github-Leitfaden gefolgt, vps. Helfen Sie mir, RAM/vCPU-Limits anzuwenden

(1)

Dies ist ein Ubuntu 24 VPS. Discourse verwendet bereits 10 GB RAM. Das ist nicht in Ordnung.

Es scheint, als würde es einen Docker-Run-Befehl erstellen. Während dieser Folgendes enthielt:

–shm-size=512m

Ich würde es vorziehen, zusätzliche CPU- und RAM-Beschränkungen anzuwenden, da ich nicht möchte, dass es 4c12r verbraucht, da hier andere Docker-Container laufen werden. Kann ich einfach den resultierenden Befehl kopieren oder ist er irgendwo gespeichert? Ich plane, docker stop und docker rm auszuführen, um Folgendes einzufügen:

–cpu-shares=1100 --shm-size=512m --memory=4g --memory-swap=8g --kernel-memory=5500m

Gibt es eine bessere Möglichkeit, diese Beschränkungen anzuwenden?

(2)

Ist „app“ wirklich der Name des Containers? –name app

docker ps zeigt, dass app der einzige der laufenden Container ist.

(3)

Das ist nicht durcheinandergebracht. Der Überprüfungsbildschirm vor dem Start zeigte meine Provider-SMTP-Domain an.

DISCOURSE_SMTP_DOMAIN=discourse.example.com

Warum ist es jetzt buchstäblich das? Wie behebe ich das? Lustiger Fakt: Es konnte mir eine Bestätigungs-E-Mail senden.

(4)

Der Docker-Run-Befehl ist leicht durcheinandergebracht.

/usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=8 -e UNICORN_SIDEKIQS=1 -e RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e RUBY_GC_HEAP_INIT_SLOTS=400000 -e RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5 -e DISCOURSE_DB_SOCKET=/var/run/postgresql -e DISCOURSE_DB_HOST= -e DISCOURSE_DB_PORT= -e DISCOURSE_FORCE_HTTPS=true -e LC_ALL=en_US.UTF-8 -e LANGUAGE=en_US.UTF-8 -e DISCOURSE_HOSTNAME=a.shop -e DISCOURSE_DEVELOPER_EMAILS=x -e DISCOURSE_SMTP_ADDRESS=x -e DISCOURSE_SMTP_PORT=587 -e DISCOURSE_SMTP_USER_NAME=x -e DISCOURSE_SMTP_PASSWORD=Fx -e DISCOURSE_SMTP_DOMAIN=discourse.example.com -e DISCOURSE_NOTIFICATION_EMAIL=x -e LETSENCRYPT_ACCOUNT_EMAIL=x -h hoho-app -e DOCKER_HOST_IP=172.17.0.1 --name app -t -p 80:80 -p 443:443 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address xx local_discourse/app /sbin/boot

Ich habe diese Anweisungen befolgt:

Dies ist eine Antwort von ask.discourse.org. Bitte berichten Sie über ihre Nützlichkeit.


1. Festlegen persistenter CPU- und RAM-Limits für Discourse Docker

Wenn Discourse auf einem VPS über die offizielle GitHub-Anleitung installiert wird, sind Ressourcenlimits wie --memory und --cpus standardmäßig nicht enthalten. Sie können zwar manuell solche Flags zum Docker-Run-Befehl hinzufügen, aber alle Änderungen, die direkt mit docker stop und einem neuen docker run vorgenommen werden, gehen nach der Ausführung von ./launcher rebuild app verloren. Das Launcher-Skript erstellt den Container immer neu.

Empfohlene Ansätze:

a) Modifikation des Launcher-Skripts
Um Ressourcenlimits persistent durchzusetzen, müssen Sie das launcher-Skript ändern, das Discourse zum Starten von Docker-Containern verwendet. Passen Sie beispielsweise in der Nähe von Zeile 289 an:

$docker_path run $restart_policy "${env[@]}" -h "`hostname`-$config" \
    -m="4g" --cpus="2.0" -e DOCKER_HOST_IP=$docker_ip ...

Dies stellt sicher, dass jeder ./launcher rebuild den Container mit Ihren Limits erstellt.

Quelle und weitere Informationen:

b) Direkte Bearbeitung des Docker-Befehls
Obwohl es technisch möglich ist, Docker mit benutzerdefinierten Limits auszuführen, indem Sie Ihren neu erstellten docker run-Befehl kopieren, ist dies nicht persistent und wird nicht empfohlen.

Es gibt noch keine offizielle, persistente “integrierte” Methode, um Docker --memory- oder --cpus-Argumente für die Standardbereitstellungstools von Discourse zu übergeben, außer durch Modifikation des Launchers.


2. Container-Name

Standardmäßig benennt der Discourse-Launcher den Container app. Sie können dies mit docker ps überprüfen. Das Ändern des Containernamens würde ebenfalls erfordern, den Launcher oder die Vorlagen direkt zu ändern.
Lesen Sie mehr: Discourse in einem Docker-Container


Nützliche Links


Wenn Sie nach einer eleganteren und persistenten Methode suchen (wie eine Vorlage oder eine unterstützte Launcher-Funktion), lesen Sie diese verwandte Diskussion:
Schalter für ressourcenbeschränkte VPS?

1 „Gefällt mir“

Gut. Nachdem ich bestätigt habe, dass Snapshots wie erwartet wiederhergestellt werden können, werde ich diesen Hack ausprobieren.

Sind Unicorns direkt 2x mit der Anzahl der vCPUs des VPS verbunden?