UI在短时间内随机失败

您好!

我安装了我自己的“稳定版”Discourse,使用了外部的 Postgres 和 Redis。
为了明确架构:在 Azure 中,1 个负载均衡器,1 台托管 Discourse 容器的虚拟机,带有用于备份和图片的 NFS 共享,1 个 Postgres,1 个 Redis。

我通过自定义了我的徽标、discourse-calendar 插件和 discourse-news 插件(以及其他一些此处不相关的设置)来定制它。

随机地,在像 30 分钟这样的时间段内,一些 UI 会出现故障:

  • 主徽标会恢复为默认徽标
  • 网站图标会恢复为默认网站图标
  • discourse-calendar 生成的“upcoming-events”页面会消失(没有链接,通过 URL 访问时会收到 404 响应)
  • discourse-news 的自定义徽标(带有 URL)会消失

然后它又恢复正常。

我的日志中没有任何关于此的信息。
我的浏览器控制台中也没有显示任何内容。
我能告诉您的一件事是,在此期间,我可以看到 Redis 缓存未命中次数的增加。

有人能帮我排查这个问题吗?我甚至不知道在哪里可以找到相关的日志……

恐怕这与标准安装相差太远,我无法提供任何帮助。:slight_smile:

您找到您需要的东西了吗?

2 个赞

我没有找到。
而且我的问题偶尔还是会出现 :disappointed_relieved:
我不知道该去哪里寻找线索……

最简单的方法是切换到 stabs/standard 安装。这样也会更便宜。我想不出还有什么可能。

1 个赞

@pfaffman 从我的角度来看,我确实使用了标准安装。
除了我使用了提供的功能来使用外部数据库和 Redis。
但我使用了标准安装中描述的 app.yaml 和 docker build and run。

我这样做是为了能够提供高可用性和不同的扩展策略:使用完全独立的部署,您只能垂直扩展(扩展您的节点),而不能实现高可用性。

明白了。听起来确实应该能解决问题。我最有可能的猜测是,您将虚拟机缩减到了零,而您看到的是浏览器中的缓存站点。或者,负载均衡器以某种方式未能连接到主机。或者 Discourse 没有获取到真实 IP 地址,因此受到了速率限制(但通常您会看到一个错误)。

但您的“高可用性”功能却提供了“低可用性”。除非您是从大部分时间只有几十个用户,变成某些时候有成千上万的用户(就像体育网站那样),否则扩展性可能会弊大于利。

所以,我的第一步是移除负载均衡器,看看是否能解决问题。然后根据情况再做决定。如果一个月只发生一次,诊断起来不会很容易。