Aktualisierung von Discourse – Node.js automatisch auf 2G erhöht auf einer 1G-Maschine

Ich verwende die kleinste unterstützte Konfiguration: 1 GB RAM und 2 GB Swap. Es scheint mir, dass etwas im Rebuild-Skript Node.js anweist, mehr RAM zu verwenden, als ich habe, was offenbar die Garbage Collection unterdrückt und zu viel Swapping verursacht. Ist das so gewollt?

Das ist mir im Konsolenprotokoll aufgefallen:

I, [2024-06-14T15:19:15.613029 #1]  INFO -- : cd /var/www/discourse & su discourse -c 'bundle exec rake assets:precompile:build'
Node.js heap_size_limit (504.75) is less than 2048MB. Setting --max-old-space-size=2048 and CHEAP_SOURCE_MAPS=1
...[ConfigLoader]
...[Babel: @embroider/macros > applyPatches]

Stack Exchange legt nahe, dass dies nicht gut ist:

Die konfigurierte max-old-space-size hatte ein höheres Limit als die Gesamtmenge an RAM, die die Maschine hatte.

Zusammenfassend lässt sich sagen, dass ich auf einer Maschine mit 2 GB Speicher wahrscheinlich --max-old-space-size auf etwa 1,5 GB einstellen würde, um etwas Speicher für andere Zwecke zu lassen und Swapping zu vermeiden.

Etwa zu dieser Zeit sehe ich eine enorme Swap-Aktivität:

# df -h / ; free ; uptime ; ps auxrc ; vmstat 5 5
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        25G   20G  4.7G  81% /

              total        used        free      shared  buff/cache   available
Mem:        1009140      860952       81820        1104       66368       43068
Swap:       2097144      707016     1390128

 15:21:53 up 155 days, 23:02,  2 users,  load average: 1.69, 1.85, 1.36

USER       PID %CPU %MEM      VSZ    RSS TTY      STAT START   TIME COMMAND
message+   920  0.0  0.1    50192   1872 ?        Rs   Jan10   5:57 dbus-daemon
root     16979  0.0  0.0        0      0 ?        R    14:14   0:02 kworker/u2:2
1000     24317 84.1 71.4 43775512 720984 ?        Rl   15:19   2:07 ember
root     24346  0.0  0.3    40100   3468 pts/0    R+   15:21   0:00 ps
procs -----------memory----------   ---swap-- -----io----  -system-- ------cpu-----\n r  b   swpd   free   buff  cache    si    so    bi    bo   in    cs us sy id wa st\n 2  1 710656  79768   7712  60940   350   283   586   352    1     2  3  2 90  4  0\n 1  5 798060  65440   3848  52544 21749 19198 23815 19247 3896 16477 30 17  0 52  1\n 0  1 885676  73820   1256  37388 19674 18806 20887 18811 3851 16681 21 20  0 55  3\n 1  0 704056 103080  11512  70892  8414  3910 17269  3914 1855  7618 64 11  0 25  1\n 1  0 693816  95020  11520  70908  1589     0  1589    54  470  1032 95  1  0  4  0\n```

(Dies geschieht während eines Kommandozeilen-Rebuilds und Updates von ca. 3.2.0.beta5-dev(bcb31f79ce) auf (Latest) 3.3.0.beta3-dev(49fdccbb1d). Der Rebuild wurde in etwa 30 Minuten erfolgreich abgeschlossen.)