502 Bad Gateway после обновления до последней версии

После обновления до последней версии Discourse у нас возникла странная проблема с Nginx: ошибка 502.

У некоторых пользователей возникает ошибка 502 при публикации, у других — нет. Некоторые профили вызывают ошибку 502, другие — нет.

Использование процессора составляет около 10–25%, использование оперативной памяти также около 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/"

Какая версия была до обновления?

Действительно старый, год или больше. Есть ли где-то журнал, где я могу увидеть, с какой версии я обновился?

Также получаю некоторые из этих ошибок:

*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 мс

У нас много постов и немного пользователей… почему на это уходит 600 тысяч мс?

Возможно, дело в проблемах с индексацией или чём-то подобном, из-за чего запросы выполняются медленно?

Я выбрал таблицу discourse в PostgreSQL и выполнил REINDEX DATABASE discourse, надеясь ускорить работу.

Полагаю, это займёт очень много времени.

Вы следовали рекомендациям в обновлении PostgreSQL 15? Также стоит выполнить вакуумирование базы данных.

Я не делал этого, но у меня есть папка postgres_data_old (хотя она находится в другом каталоге, чем в том посте).

Но затем в посте говорится:

“Если вы используете настройку с выделенным контейнером данных”, что я предполагаю означает, что PostgreSQL работает в отдельном контейнере Docker?

У нас они работают в том же экземпляре, что и форум. Поэтому я не уверен, как двигаться дальше — кажется, нет пункта “если нет, то”?

Означает ли наличие этой папки, что конвертация прошла успешно, или нет?

Версию PostgreSQL можно проверить по пути /var/discourse/shared/standalone/postgres_data/PG_VERSION. Если вы выполняли обновление через командную строку, возможно, оно уже прошло, и вы этого не заметили (но в таком случае вам пришлось бы запустить пересборку дважды). Если вы обновлялись через веб-интерфейс, рекомендуется выполнить пересборку через командную строку, если ваша операционная система и Docker являются актуальными версиями.

Версия 15.

Кажется, после запуска команды vacuum всё стало намного лучше.

Публикация работает нормально и кажется быстрой, но когда администратор пытается перейти к профилям пользователей, заходит в их профили, всё ещё возникает ошибка 502, похоже на тайм-аут?

Есть ли что-то, что я могу сделать, чтобы ускорить эту часть базы данных?