Crius
(Crius)
1
Discourse 版本:3.4.0.beta1-dev (bf3d8a0a94)
昨天更新后,我按照此处的建议禁用了 Cloudflare 的 minify 功能:
然而,从那时起,许多用户(包括我)都遇到了多次 502(网关错误)和 529(请求过多)的错误。
为了尝试缓解这个问题,我还遵循了本指南:
但这些错误的发生频率似乎没有任何改变。
更新发生在昨天上午 11 点左右。我进行了完全重建,因为我还想禁用一个插件。
我有一个 Prometheus+Grafana 实例来监控服务器和 discourse,但服务器在加载方面似乎没问题:
Discourse 指标(昨天上午 11 点左右指标下降是重建导致容器关闭):
同样,我没有看到任何奇怪的模式。
然而,这是刚才浏览器控制台的截图,在我尝试向用户发送私信后:
如果还需要其他任何信息(任何类型的日志),请随时提出。谢谢。
Crius
(Crius)
2
另外,如果这有帮助的话,“后台”的许多实时操作也明显滞后。
例如,已读主题未被注册为已读。
Firepup650
(Firepup Sixfifty)
3
只是为了确保,你也完成了这一步,然后重新构建,对吗?
1 个赞
Crius
(Crius)
4
是的,抱歉,我忘了补充,很久以前我已经将 Cloudflare 模板添加到了 app.yml 文件中。我们从第一天起就一直使用 Cloudflare。
这是 app.yml 的一部分,我们有自己的证书独立续订,这就是为什么 letsencrypt 的被注释掉了:
## 这是集成式、独立的 Discourse Docker 容器模板
##
## 更改此文件后,您必须重建
## /var/discourse/launcher rebuild app
##
## 编辑时请务必*非常*小心!
## YAML 文件对空格或对齐错误非常非常敏感!
## 如有需要,请访问 http://www.yamllint.com/ 来验证此文件
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## 如果您想添加 Lets Encrypt (https),请取消注释这两行
- "templates/web.ssl.template.yml"
# - "templates/web.letsencrypt.ssl.template.yml"
- "templates/cloudflare.template.yml"
## 此容器应暴露哪些 TCP/IP 端口?
## 如果您希望 Discourse 与 Apache 或 nginx 等其他 Web 服务器共享端口,
## 请参阅 https://meta.discourse.org/t/17247 获取详细信息
expose:
- "80:80" # http
- "443:443" # https
[... ]
Crius
(Crius)
6
我看到这被移到了 Installation,只是为了清楚起见,这不是新安装。
这个 discourse 实例自 2023 年 3 月以来一直在运行,从未出现过这个特定问题。
过去曾出现过一些 529 问题,但后来已得到解决。
Falco
(Falco)
8
看起来您的 PostgreSQL 已不堪重负。看起来您的大部分 RAM 都处于空闲状态,我建议尝试调整数据库以使用它,然后看看情况如何。
1 个赞
RGJ
(Richard - Communiteq)
9
/sidekiq/queues 是什么样子的?
您是从哪个版本更新的?
1 个赞
Crius
(Crius)
10
从 5 月 6 日的最新稳定版 v3.2.1 到最新的 test-passed。
Sidekiq 队列:
Dead job 部分是这个,但似乎自古以来就是同一个 job。
最旧的条目:
重试中的似乎是同一个 job 被一遍又一遍地重试。
Crius
(Crius)
11
但是……为什么突然出现这种情况?仅仅是应用程序层更新之后?
我正在使用 discourse prometheus exporter 插件。
如果我在虚拟机上添加一个 postgresql exporter 作为另一个容器,是否可以允许它访问 discourse postgresql 安装上的指标?
Crius
(Crius)
12
关于如何微调 discourse 的数据库,是否有更精确的指导?
Crius
(Crius)
13
不确定是否相关,但这肯定是在更新后开始发生的,点击未读标签中的“忽略”按钮总是返回 503。
Crius
(Crius)
14
既然似乎没有解决方案,我将尝试回滚到最新的 stable 版本,因为它应该是……你知道的,稳定的。
祈祷没有核心依赖项破坏构建过程,就像上次一样。
RGJ
(Richard - Communiteq)
15
你不能从 tests-passed 回到 stable,除非有更高版本的 stable 可用。所以你下次有机会是在 3.4.0 发布时,我估计那是在圣诞节左右或之后……
再说,你总有一天得咬紧牙关挺过去。
1 个赞
Crius
(Crius)
16
好吧,我刚做完了。似乎在工作。反正我们也不关心 3.3.0 中的任何功能。
我会看看是否还有问题。最坏的情况是我们仍然会遇到大量的 429 和 502,变化不大。
如果能指导我如何配置 Discourse 上的 Postgres 以获得更多可用资源,我将不胜感激。
编辑:已部署 3.2.5 版本。系统似乎稳定。
Crius
(Crius)
18
我总是在报告问题时提及我所在的版本。
我认为重要的是要记住,正是因为这是开源软件,所以应该考虑关键问题,而不是写诸如以下内容:
这是人们不遗余力地切换到“稳定”版本,遇到一些因未部署最受欢迎的版本而出现的 bug 的又一个例子。
当 stable 应该意味着“稳定”,而不是“遗留”时。
像 discourse docker 这样的核心依赖项在没有标签系统的情况下被推送的事实,足以让您在回应报告问题的用户时稍微谦虚一点。
RGJ
(Richard - Communiteq)
19
我当时说的是,当你技术上无法降级时,提及你降级的事实。
我认为记住这一点很重要……我不为 Discourse 工作,我是在利用自己的业余时间帮助你,所以我并不欣赏你的语气,也无法处理你的反馈。
2 个赞