无法重建应用程序

日志在此:

[2025-03-31T05:52:21.927771 #1]  INFO -- : cd /var/www/discourse && if [ -f yarn.lock ]; then
  if [ -d node_modules/.pnpm ]; then
    echo "此版本的 Discourse 使用 yarn,但预设了 pnpm node_modules。正在清理..."
    find ./node_modules ./app/assets/javascripts/*/node_modules -mindepth 1 -maxdepth 1 -exec rm -rf {} +
  fi
  su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'
else
  su discourse -c 'CI=1 pnpm install --frozen-lockfile && pnpm prune'
fi
bash: line 1:   302 Killed                  CI=1 pnpm install --frozen-lockfile
I, [2025-03-31T05:52:29.299652 #1]  INFO -- : Scope: all 17 workspace projects
Lockfile is up to date, resolution step is skipped
Progress: resolved 1, reused 0, downloaded 0, added 0
Packages: +455 -114
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------
Progress: resolved 455, reused 170, downloaded 50, added 119
Progress: resolved 455, reused 170, downloaded 187, added 257
Progress: resolved 455, reused 170, downloaded 281, added 349
Progress: resolved 455, reused 170, downloaded 285, added 357, done
.../core-js@3.33.0/node_modules/core-js postinstall$ node -e "try{require('./postinstall')}catch(e){}"
.../node_modules/@swc/core postinstall$ node postinstall.js
.../esbuild@0.24.2/node_modules/esbuild postinstall$ node install.js
.../core-js@3.33.0/node_modules/core-js postinstall: Done
.../node_modules/@swc/core postinstall: Failed


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && if [ -f yarn.lock ]; then
  if [ -d node_modules/.pnpm ]; then
    echo "此版本的 Discourse 使用 yarn,但预设了 pnpm node_modules。正在清理..."
    find ./node_modules ./app/assets/javascripts/*/node_modules -mindepth 1 -maxdepth 1 -exec rm -rf {} +
  fi
  su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'
else
  su discourse -c 'CI=1 pnpm install --frozen-lockfile && pnpm prune'
fi failed with return #<Process::Status: pid 299 exit 137>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"yarn", "cmd"=>["if [ -f yarn.lock ]; then\n  if [ -d node_modules/.pnpm ]; then\n    echo \"此版本的 Discourse 使用 yarn,但预设了 pnpm node_modules。正在清理...\"\n    find ./node_modules ./app/assets/javascripts/*/node_modules -mindepth 1 -maxdepth 1 -exec rm -rf {} +\n  fi\n  su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'\nelse\n  su discourse -c 'CI=1 pnpm install --frozen-lockfile && pnpm prune'\nfi"]}
bootstrap failed with exit code 137
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.

如果我的记忆没错,Exit 137 意味着内存不足。

添加更多 RAM 和/或增加交换空间。您可能至少需要 5GB 的交换空间+RAM。

3 个赞

               total        used        free      shared  buff/cache   available
Mem:            31Gi       4.1Gi        17Gi       3.5Mi       9.9Gi        27Gi
Swap:          8.0Gi          0B       8.0Gi

but my server mem enough.. @pfaffman

2 个赞

那非常奇怪。137确实意味着该作业收到了SIGKILL信号,通常表示内存不足。

不过,用那么多内存就不合理了。

2 个赞

这很奇怪。

也许可以检查一下
sysctl vm.overcommit_memory
的输出

还有:

1 个赞
cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=24.04
DISTRIB_CODENAME=noble
DISTRIB_DESCRIPTION="Ubuntu 24.04.2 LTS"

$ uptime
 02:12:36 up 21 days,  5:25,  2 users,  load average: 0.02, 0.18, 0.26

$ df -h /
Filesystem                             Size  Used Avail Use% Mounted on
/dev/mapper/vg0--root-root--partition  492G   29G  463G   6% /

$ free
               total        used        free      shared  buff/cache   available
Mem:        32819356     4093776    19016296        3576    10185012    28725580
Swap:        8388604           0     8388604

$ swapon
NAME      TYPE SIZE USED PRIO
/swap.img file   8G   0B   -2

$ vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- -system-- -------cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st gu
 2  0      0 18944824   3620 10211784    0    0     2    81 1057    1  1  0 99  0  0  0
 0  0      0 18965764   3620 10195160    0    0     0   123 8661 10955  3  6 91  0  0  0
 2  0      0 18953904   3620 10203228    0    0     0     9 3388 3559  1  1 98  0  0  0
 1  0      0 18864336   3620 10292272    0    0     3  3408 8327 10272  6  4 90  0  0  0
 9  3      0 17795380   3620 10561284    0    0  1666 33519 29310 41403 27 27 44  1  0  0

dmesg|egrep -i "memory|oom|kill"
none

$ ps auxrc
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
td20      347732  200  0.0  21408  5588 pts/1    R+   02:16   0:00 ps

$ sysctl vm.overcommit_memory
vm.overcommit_memory = 0


@Ed_S

我注意到当内存使用量超过1GB时,进程很快就被杀死了。

谢谢…对我来说仍然是个谜。但我强烈建议使用 overcommit。您现在可以设置它:

sudo sysctl vm.overcommit_memory=1

但要在重启时也进行设置可能需要多花一些功夫。如果一切都能正常工作,那么将其持久化是正确的做法。看起来我是通过创建一个单行文件来完成的:

# cat /etc/sysctl.d/90-vm_overcommit_memory.conf
vm.overcommit_memory=1

如果这没有帮助,感觉就像某个看门狗或配额在监视资源过度使用并终止进程。也许仔细查看完整的 dmesg 输出会有帮助——如果您最近遇到了故障,也许最后 100 行会提供一些线索。

1 个赞
2 个赞

此主题已在 2 天后自动关闭。不再允许回复。