Ruby-Speicherlimit konfigurieren?

Könnte die maximal zulässige Speichernutzung als Site-Konfigurationsoption festgelegt werden? Derzeit ist die Einstellung auf 2 GB gesetzt (Edit: Oops, ich liege falsch, siehe unten) – zuvor waren es 4 GB – und doch wird für die empfohlene Hardwarekonfiguration 1 GB + Swap angegeben. Es scheint mir, dass ein 1-GB-Knoten bei einer tatsächlichen Ruby-Speichernutzung von bis zu 2 GB leicht in eine Art Paging-Frenzy geraten könnte.

Aus einem Upgrade-Log:

Migrating default
Seeding default
*** Bundling assets. This will take a while *** 
$ RUBY_GC_MALLOC_LIMIT_MAX=20971520 RUBY_GC_OLDMALLOC_LIMIT_MAX=20971520 RUBY_GC_HEAP_GROWTH_MAX_SLOTS=50000 RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=0.9  bundle exec rake assets:precompile
Purging temp files
Bundling assets
1 „Gefällt mir“

Ich bin mir nicht sicher, wie relevant diese Einstellungen in modernem Ruby sind, aber @sam weiß das am besten.

1 „Gefällt mir“

Ähm, Entschuldigung, das ist kein 2G, das sind 20M. Also gar nicht so wie die Situation, von der ich dachte, dass sie wäre. (Edit: Es ist schlimmer! Siehe unten)

1 „Gefällt mir“

Probier 20G. :wink: :slightly_smiling_face:

1 „Gefällt mir“

Discourse hat einen vorhersehbaren Speicherverbrauch, daher ist der relevante Parameter die Anzahl der Unicorn-Worker.

Bei einem Server mit 1 GB RAM standardisieren wir auf 2 Worker, was bei dieser geringen Speichermenge gut funktionieren sollte.

2 „Gefällt mir“

Tatsächlich, während es als Forum läuft. Aber das ist das hier nicht!

Beim Upgrade geben einige Aufgaben diese Umgebungsvariablen für Ruby an.

1 „Gefällt mir“

Ja, während der Updates setzen wir diese Variablen, damit das Upgrade auf sehr schwach ausgestatteten Maschinen nicht aufgrund von Speicherdruck fehlschlägt.

2 „Gefällt mir“

Richtig, und meine Beobachtung ist, dass die Limits in einigen Fällen möglicherweise zu hoch eingestellt sind. Ich frage mich daher, ob man sie konfigurierbar machen könnte.

2 „Gefällt mir“

Wir haben dieses Verfahren über die Jahre intensiv getestet und können versichern, dass es für kleine Communities auf einem 1-GB-VPS problemlos funktioniert. Während des Upgrades werden sogar zusätzliche Unicorn-Worker beendet, um Speicher freizugeben und so zu helfen.

Sie können den Code aus diesem Commit einsehen:

Wenn Sie das Problem auf einem Digital Ocean Droplet reproduzieren können, schauen wir uns das gerne an.

Falls dies zwingend erforderlich ist, können Sie das Plugin forken und an Ihre Bedürfnisse anpassen.

4 „Gefällt mir“

Danke, ich habe jetzt ein Bild. (Zwei sehr wichtige Punkte: Diese GC-Einstellungen sind speziell für Upgrades angepasst, und die Einheiten sind Bytes, sodass das Limit derzeit auf 20 MB festgelegt ist. In diesem früheren Thread finden Sie nützliche und interessante Details [Archivlink, da er mir derzeit nicht zur Verfügung steht].)

2 „Gefällt mir“

Sollen wir das Thema @sam wiederherstellen? Hat es historischen Wert oder ist es veraltet?

1 „Gefällt mir“

Es ist zweifellos veraltet; die neueste Ruby-Version verfügt über mehrere malloc-Grenzen. Es ist ein interessantes Thema mit historischem Wert, sollte jedoch mit einem großen Schild „Veraltet

5 „Gefällt mir“