最新バージョンへのアップデート後、502 Bad Gateway

Discourse を最新バージョンにアップデートした後、nginx で 502 エラーが発生するという奇妙な問題が発生しています。

一部のユーザーは投稿時に 502 エラーを受け取りますが、そうでないユーザーもいます。一部のプロフィールでは 502 が発生しますが、そうでないプロフィールもあります。

CPU 使用率は 10 ~ 25%、RAM 使用率は約 20% です。

5 つのプラグインを無効にしてみましたが、結果は同じでした。

これらの 502 エラーの原因を特定するには、どのログを確認すればよいですか?

/var/log/nginx/error.log を見ると、ランダムにこれらのエラーが多く発生しており、これが 502 の原因だと推測されます。

単にタイムアウトしているのでしょうか?

2025/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/"

アップデート前のバージョンは何でしたか?

本当に古い、1年以上前のものです。アップグレード元を確認できるログはどこかにありますか?

これもいくつか発生しています

*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:  duration: 606789.911 ms  execute <unnamed>: SELECT COUNT(*) FROM "posts" WHERE "posts"."deleted_at" IS NULL

duration: 606789.911 ms

投稿はたくさんありますが、ユーザーは少ないのに、なぜ600,000ミリ秒もかかっているのでしょうか?

インデックスの問題などで、クエリが遅くなっているのでしょうか?

PostgreSQL の discourse テーブルを選択し、処理を高速化するために REINDEX DATABASE discourse; を実行しました。

非常に時間がかかるだろうと推測しています。

PostgreSQL 15 update のアドバイスに従いましたか?データベースを VACUUM する必要があるかもしれません。

私はそうしませんでしたが、postgres_data_oldフォルダはあります(ただし、その投稿と異なるディレクトリにあります)。

しかし、その後の投稿では;

“もし専用のデータコンテナを使用しているセットアップを運用している場合” と書かれていますが、これはPostgreSQLがDockerの専用コンテナで動作しているという意味だと思いますか?

私たちの環境はフォーラムと同じインスタンスで動いています。だから、どう進めるべきか分からないですし、"もしそうでなければ"の条件句はないようです。

フォルダの存在は変換が成功したことを意味しますか、それとも別の意味がありますか?

PostgreSQLのバージョンは /var/discourse/shared/standalone/postgres_data/PG_VERSION で確認できます – コマンドラインアップグレードを行った場合、アップグレードが成功していて気付いていない可能性があります(ただし、再構築を2回実行している必要があります)。ウェブインターフェースからアップグレードした場合は、お持ちのOSとDockerが最新バージョンであれば、コマンドラインによる再構築を進めることをお勧めします。

バージョンは15です。

VACUUMコマンドを実行した後、状況はかなり改善されたようです。

投稿は正常に機能し、高速であるように思われますが、管理者がユーザープロファイルをクリックしてプロファイルに入ろうとすると、まだ502エラーが発生します。タイムアウトのようですが?

データベースのその部分を高速化するために何かできることはありますか?

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