3.1.x 到 3.2.0 升级在 1GB 实例上卡住或失败

好的,我明白了。是否无法将引导/编译过程进行优化,使其在受限资源(例如 RAM)内花费更长的时间(CPU/序列化)?

1 个赞

我认为这将是一个好主意。原因如下:如果一个人无法在小型服务器上重建,那么他就无法在小型服务器上安装。如果一个人在中型服务器上安装,他就不会创建小型服务器上需要交换文件。 (理想情况下,安装脚本也会创建交换文件,并设置两个应该设置的内核可调参数。)

这也是一个很棒的主意。就像理想情况下软件工程过程会监控构建时间一样,因为否则构建时间会越来越长,对于 Discourse 来说,这个过程理想情况下会测试和监控在小型实例上的可安装性。将其作为一个目标。

1 个赞

我已经尝试过制作可以在启动时迁移和预编译资源的自举镜像(通过环境变量设置来跳过这些任务)。这在大多数情况下是可行的(对于大型网站以及依赖于在特定时间内完成启动的事物来说,效果不太好)。

不过,这些确实依赖于 redis 和 postgres 的存在。

使用一个基本标准的双容器安装,或许可以使其在大多数情况下正常工作。

哦哦哦哦哦哦哦哦哦哦哦,但我猜预编译资源是导致问题的步骤。。。

我正在阅读关于 Ember 5 升级的信息,它正在通过系统进行。这对构建资源有什么影响?

我认为文档需要更新,discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub

  • 1 GB RAM 的默认值对于小型 Discourse 社区来说效果很好。

1GB 已不再是选项。构建 discourse 的最低要求是 2GB。

1 个赞

我最近升级了一堆网站,每个网站都配备了 1GB 内存。不过,我确实将它们的交换空间增加到了 3 或 4GB。

我当然不推荐这样做,但对某些人来说,这是一个巨大的成本障碍,他们也能应付。但也许“运行良好”有点夸张了。

3 个赞

是的,也许可以指定一下,1GB RAM + 4GB 交换空间。它在使用 2GB 交换空间时失败了。

您有插件吗?有很多主题吗?

9 个插件和 1 个主题。再次说明,所有这些在 1GB RAM 和 2GB 交换空间上直到 3.1.x 都运行良好(速度有点慢,重建可能需要 20 分钟,但总是有效的)。
尝试升级到 3.2.0 时,始终失败(见上文)。

是的。绝对不要使用 1GB 内存的插件。这似乎是安装文档中需要添加的内容。

我很想知道在没有插件的情况下它是否有效。

作为一个极端的简写,我明白你为什么会这么说,但你不同意吗?运行 Discourse 的 go/nogo 标准是 RAM+swap?从 go/nogo 的角度来看,1+3 和 2+2 一样好。

只有性能(响应速度)才关心你有多少 RAM。

RAM+swap 是需要检查和测试的正确方法。Memory=RAM+swap。

顺便说一句,如果某件事没有明显原因就无法正常工作,特别是如果你怀疑内存不足,那么检查“内存不足”杀手(也称为 OOM-killer)是值得的。我推荐

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

编辑:为了方便起见,我将把它添加到我的标准即时诊断列表中:

cat /etc/lsb-release
uptime
df -h /
free
vmstat 5 5
dmesg|egrep -i "memory|oom|kill"
ps auxrc
5 个赞

我也遇到了同样的问题,不是在升级过程中,而是在全新安装 3.2.0 版本时遇到的。

我正在使用 AWS EC2,就像 @RBoy 一样。

我正在寻找一个解决方案来安装 3.1.5 版本而不是 3.2.0 版本,因为旧论坛没有提供任何帮助。

更新:

抱歉,我找到了这个:

1 个赞

我很想知道您是否能够使用您链接中提到的标签方法全新安装 3.1.5。如果您尝试了,请回复。

至于在 1GB 系统上安装 3.2.0,您可以尝试这样做,将 SWAP 大小设置为 8GB,看看是否可行。它可能会非常慢,但也许可行。

感谢您深思熟虑的指导。

我最近完成了 Discourse 3.15 Docker 版本的全新安装,并想分享一下这个过程是多么简单,特别是对于像我一样使用 AWS EC2 免费套餐的用户。

以下是我根据经验总结的简明指南:

  1. 导航到您的 Discourse 配置文件,位于 /var/discourse/containers/app.yml

  2. params 部分,更新 version 参数以匹配您想要的 Discourse 版本。例如:

    params:
      # ...
      ## Specify the Git revision for this container (default: tests-passed)
      version: v3.1.5 # 在此处使用特定的标签名称
    
  3. 保存更改并退出编辑器。然后,执行以下命令重建您的 Discourse 应用程序:

    /var/discourse/launcher rebuild app
    

这个过程对我来说运行得很顺利,证明了维护一个低成本甚至零预算的 Discourse 设置是完全可行的。

我希望这个指南能帮助到其他正在寻找有效且经济高效地管理其 Discourse 安装的用户。

2 个赞