升级到最新版本后出现502 Bad Gateway

在更新到最新版本的 Discourse 后,我们遇到了一个奇怪的问题,nginx 出现 502 错误。

有些用户发帖时会收到 502 错误,有些则不会。有些个人资料会显示 502,有些则不会。

CPU 使用率约为 10% 到 25%,RAM 使用率也约为 20%。

我尝试禁用我们的 5 个插件,结果相同。

我应该查看哪些日志来找出导致这些 502 错误的原因?

我在 /var/log/nginx/error.log 中查找时,似乎随机出现了很多这样的错误,我猜这导致了 502。\n\n是超时还是什么?\n\n\n2025/04/29 18:11:50 [error] 617#617: *419 upstream prematurely closed connection while reading response header from upstream, client: <IP>, server: _, request: "POST /posts HTTP/2.0", upstream: "http://127.0.0.1:3000/posts", host: "forum.domain.com", referrer: "https://forum.domain.com/" \n

更新前的版本是什么?

非常旧,比如一年或更久。有没有什么地方可以查看我从哪个版本升级过来的日志?

也遇到了一些这种情况

*2 connect() failed (111: Connection refused) while connecting to upstream,
...
upstream: "http://127.0.0.1:3000/message-bus/92fd28cbf742...

看起来是随机的,有时一切都很快,我又能发帖了,然后又会变慢,502 错误又开始出现。

查看 postgres/current 日志

2025-04-29 18:48:24.709 UTC [1746] discourse@discourse LOG:  执行时间:606789.911毫秒  执行 unemapped: SELECT COUNT(*) FROM "posts" WHERE "posts"."deleted_at" IS NULL

执行时间:606789.911毫秒

我们确实有大量的帖子,用户很少……为什么这个查询会耗时60万毫秒?

是不是索引或其他问题导致查询缓慢?

我在 postgres 中选择了 discourse 表并执行了 REINDEX DATABASE discourse;,希望以此来提高速度。

我猜这会花费很长时间。

您是否遵循了PostgreSQL 15 更新中的建议?您也可以对数据库进行 VACUUM 操作。

我没有,我确实有一个 postgres_data_old 文件夹(虽然它在不同于那篇文章的目录中)。

但是,然后文章说;

“如果你在使用带有专用数据容器的设置”,我猜这意味着 PostgreSQL 在一个专用的 Docker 容器中运行?

我们的运行在同一实例上,所以不太确定从那里开始该怎么做,看起来没有“如果不是”这样的条件?

这个文件夹的存在是否意味着转换已经完成,或者其他什么含义?

您可以在 /var/discourse/shared/standalone/postgres_data/PG_VERSION 检查 Postgres 的版本 – 如果您进行了命令行升级,可能它已完成升级而您未注意到(但您必须运行过两次重建)。如果您是通过网页界面升级的,建议如果您的操作系统和 Docker 版本较新,可以直接进行命令行重建。

版本是 15。

在我运行 vacuum 命令后,情况似乎好多了。

发帖工作正常,而且似乎很快,但当管理员尝试点击用户个人资料、进入他们的个人资料时,仍然出现 502 错误,似乎是超时了?

有什么办法可以加快数据库的这部分速度吗?

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