最小サポート構成(RAM 1G、スワップ 2G)で実行しています。スクリプトの再構築で Node.js が利用可能なメモリよりも多くの RAM を使用するように指示しているように見え、それがガベージコレクションを抑制し、大量のスワップを引き起こしているようです。これは意図した動作でしょうか?
コンソールログでこれに気づきました。
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 は、これは良くないことだと示唆しています。
https://stackoverflow.com/questions/48387040/how-do-i-determine-the-correct-max-old-space-size-for-node-js
設定された max-old-space-size は、マシンの総 RAM 量よりも高い制限を持っていました。
…
要約すると、2GB のメモリを持つマシンでは、他の用途にメモリを残し、スワップを回避するために、–max-old-space-size を約 1.5GB に設定するでしょう。
この頃、大量のスワップアクティビティが発生しているのを確認しました。
# 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----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 1 710656 79768 7712 60940 350 283 586 352 1 2 3 2 90 4 0
1 5 798060 65440 3848 52544 21749 19198 23815 19247 3896 16477 30 17 0 52 1
0 1 885676 73820 1256 37388 19674 18806 20887 18811 3851 16681 21 20 0 55 3
1 0 704056 103080 11512 70892 8414 3910 17269 3914 1855 7618 64 11 0 25 1
1 0 693816 95020 11520 70908 1589 0 1589 54 470 1032 95 1 0 4 0
(これは、約 3.2.0.beta5-dev(bcb31f79ce) から (最新) 3.3.0.beta3-dev(49fdccbb1d) へのコマンドラインでの再構築と更新中に発生しました。再構築は約 30 分で正常に完了しました。)