无法在 Lightsail 上完成构建

您好,我似乎遇到了与 Rebuild app has stuckBackground saving terminated with success 相同的问题,除了我尝试了多次重建,包括重启和不重启。

我有一个 Lightsail 实例,配备 2vCPU、1GB RAM,运行 Ubuntu 20.04。根据这里的其他讨论,我手动编辑了 db_shared_memory 为 256MB,并将 Unicorns 设置为 4。我尝试了 discourse-setupdiscourse-doctorlauncher rebuild app,它们似乎都表现出相同的行为。

我在日志中看到:
WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
但尝试 MKJ's Opinionated Discourse Deployment Configuration 中的配置似乎没有帮助。

我的构建过程卡在:

...[Babel: select-kit > applyPatches]
...[@embroider/compat/app]
...[@embroider/webpack]
...[@embroider/webpack]
107:M 22 Jan 2025 14:37:30.565 * 1 changes in 3600 seconds. Saving...
107:M 22 Jan 2025 14:37:31.648 * Background saving started by pid 854
854:C 22 Jan 2025 14:37:34.940 * DB saved on disk
854:C 22 Jan 2025 14:37:35.092 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
107:M 22 Jan 2025 14:37:35.341 * Background saving terminated with success

有什么建议可以解决这个问题吗?谢谢。

您有多少交换空间?您可以将其增加到 3 或 4GB。

您让它在该提示符下挂起了多久?

1GB 不算多;那台虚拟机上还有其他东西在运行吗?

这不是问题,但为什么要用 20.04?它的 EOL(生命周期结束)还有 4 个月。

4 个赞

抱歉,是 22.04。上面没有运行其他东西。我肯定让它挂起了一个多小时。我正在尝试增加交换空间,感谢您的建议。

另外,我遇到了虚拟机内存略低于 1GB RAM 的情况,不得不注释掉内存检查。这就是 discourse-setup 输出这个的原因吗?

Found 0GB of memory and 4 physical CPU cores
setting db_shared_buffers = 0MB
setting UNICORN_WORKERS = 0
containers/app.yml memory parameters updated.

可能是因为内存转换为 GB 以及计算 CPU 核心的方式出了问题。

1GB 现在确实很紧张。我强烈推荐 2GB。

2 个赞

目前这是一个非常小的社区,资金来自学术界,所以我正尽力将其维持在每月10美元以下。如果证明不可能,我会增加预算,谢谢!

2 个赞

有许多低于10美元的。

4 个赞

我不熟悉 Lightsail,但在 Hetzner,您每月只需 5 欧元即可获得 2 个 vCPU、4 GB RAM 和 40 GB NVMe。他们在美国也有服务器。

3 个赞

感谢您的建议。我有点依赖 AWS,因为这个项目的其他所有东西都托管/管理在那里,但如果真有必要,我一定会考虑迁移到其他地方。

3 个赞

增加交换空间比以往任何时候都让我走得更远,但我的 SSH 连接在构建完成(运行了几个小时)之前就超时了。

在数千个 Babel: discourse-plugins > applyPatches 之间的最后一个可识别输出是 [WARN] (broccoli-terser-sourcemap) Minifying "assets/browser-detect.js" took: 43325ms (more than 20,000ms). 在这里增加更多交换空间会有帮助,还是我应该只考虑增加内存?

你可以尝试使用 tmuxscreen,这样你就可以重新连接到会话。

我猜你可能没有足够的内存,增加交换空间可能会让你走得更远,但我还是建议你增加内存。也许可以调整它的大小,保持磁盘大小不变,用更多的内存重新构建,然后在虚拟机运行时将其调整为较小的尺寸。

我不知道这在 Lightsail 上是否可能或容易。

你有多少交换空间?

1 个赞

您好,我之前有 2GB 的交换空间。我后来在 Lightsail 中使用了更大的虚拟机,它构建成功了。我认为该服务不支持调整大小。再次感谢您的帮助!

附注:我仍然收到了内存超额分配警告,但没有处理它。我是否应该启用它?

1 个赞

如果你增加到 4GB,也许就能用了。

我最近没有关注这个问题。我很确定我的工具启用了它,并且错误消息没有消失。大多数人看不到或完全忽略该消息的可能性非常大。您的使用体验可能会有所不同。

1 个赞

我经常看到它,但由于我的安装工作正常,所以我只是忽略它 :smile:

我想也是,但我看到

并且认为即使它能用,仍然意味着漫长的构建时间和5美元的安心费。希望我们的社区也能成长到值得这次飞跃 :slight_smile:

1 个赞

2GB 是派对线路,但构建会占用越来越多的 RAM,因此只有 1GB 我通常会创建更大的交换空间。

这正是我一直想告诉你的,但在世界的一些地方,5 美元比其他地方多得多! :wink:

1 个赞

我领会了提示!

1 个赞

我仍然无法理解,我会想方设法省下每一分钱来租服务器,而我却乐意为Steam上我不会玩的游戏支付20美元,或者买一份15美元的披萨,明知道它可能并不好吃。:lolsob:

2 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.