好的,下一个测试已完成。
我使用以下插件构建:
https://github.com/discourse/docker_manager.git
https://github.com/discourse/discourse-data-explorer
https://github.com/communiteq/discourse-legal-compliance
https://github.com/pfaffman/discourse-allow-pm-to-staff
https://github.com/singerscreations/discourse-stopforumspam
https://github.com/discourse/discourse-cakeday
交换空间被禁用,因此只有 4GiB/3.8GB RAM。
构建期间的最大内存使用量为 3.4GB。构建时间为 6m 48s。
4 个赞
Milenski
(JustMe)
22
我遇到的问题是交换文件,在将其从0增加到2GB后,目前一切正常。
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
在你的服务器终端中执行。之后,重新构建。
2 个赞
yaxu
(Alex McLean)
23
我发现在重建时内存需求大幅增加。我有 8GB 内存,即使添加了 8GB 交换文件,在执行此步骤时仍然空间不足:cd /var/www/discourse && sudo -E -u discourse bundle exec rake multisite:migrate
这是一个包含四个论坛的多站点安装。我以前从未需要添加交换文件。
编辑 现在尝试使用 16G 交换文件,但仍然内存不足。
这是在 Linux 下进行的,启用了最少的插件。
2 个赞
嗯……我想,文档是否应该更新以反映更高的内存要求?Introducing pre-compiled JS assets for self-hosters 有助于减少加载吗?我本以为有了这个更改,需要的内存会更少
。
yaxu
(Alex McLean)
25
自从我进行重建以来可能已经有几个月了,但在 8GB 内存且没有交换空间的情况下,它之前运行良好。我仍然没有解决这个问题,所以所有四个站点都已关闭。
我不知道这是否相关,但直到我设置了环境变量 HOME: /var/www/discourse 它才构建成功——否则它会尝试写入 /root 并被拒绝访问权限。
yaxu
(Alex McLean)
26
嗯,我看到了上百个这样的进程:
node /usr/bin/pnpm add pnpm@10.28.0 --loglevel=error --allow-build=@pnpm/exe --no-dangerously-allow-all-builds --config.node-linker=hoisted --config.bin=bin
这是某种 fork 炸弹吗?
1 个赞
请务必增加大量的交换空间,即使只是为了让您恢复运行。在这里使用交换空间的优势在于构建是一个临时峰值。
我使用两个容器的设置,在引导期间内存压力更大,因为您还有两个正在运行的容器。
yaxu
(Alex McLean)
28
我现在添加了 40GB 的交换空间,但仍然不够。
我看到了数百个这样的 node 进程,这似乎是问题所在?
我开始认为根本原因与我早些时候遇到的问题相同,当时我必须设置 HOME: /var/www/discourse,否则它会尝试写入 /root 下的文件。但我不知道该怎么做。
2 个赞
好的,出了点大问题。我也会考虑备份并从头开始重建。
1 个赞
yaxu
(Alex McLean)
32
谢谢,我想我先将整个服务器恢复到上一个已知良好的状态,然后从一个可工作的系统进行备份。
有人知道可能出了什么问题吗?
1 个赞
yaxu
(Alex McLean)
33
问题确实与 HOME 未正确设置有关,向 sudo 命令添加 -H 以进行多站点迁移解决了问题,详情请参见:
6 个赞