Сервер испытывает проблемы с файлом summary.json у некоторых случайных пользователей и возвращает код 502. Вероятно, это началось после последнего обновления, но я не уверен.
Я не знаком со стеком Discourse и испытываю трудности с поиском логов. Отредактировал, чтобы скрыть имя пользователя и IP-адрес; время может варьироваться, но чаще всего это повторяющиеся запросы к одной и той же странице профиля.
Из приложения /var/log/nginx/error.log:
[error] 560#560: *416 upstream prematurely closed connection while reading response header from upstream, client: *.*.*.*, server: _, request: "GET /u/user/summary.json HTTP/2.0", upstream: "http://127.0.0.1:3000/u/user/summary.json", host: "forum.taucetistation.org", referrer: "https://forum.taucetistation.org/u/user"
Файл /shared/log/rails/production_errors.log пуст, а в /shared/log/rails/production.log содержатся только записи:
Started GET "/u/user/summary.json" for *.*.*.* at 2024-05-24 20:26:56 +0000
Processing by UsersController#summary as JSON
Parameters: {"username"=>"user"}
без строки “Completed 200 OK” для аналогичных запросов.
Кажется, что в логах unicorn нет связанных записей (только ошибки подключения к redis при запуске, но в итоге соединение устанавливается успешно, и это не связано с проблемой).
Однако в файле /var/log/postgres/current есть один подозрительный запрос с большим временем выполнения:
2024-05-24 20:49:12.727 UTC [2919] discourse@discourse LOG: duration: 95288.368 ms execute <unnamed>: SELECT replies.user_id, COUNT(*) FROM "posts" INNER JOIN "topics" "topics_posts" ON "topics_posts"."deleted_at" IS NULL AND "topics_posts"."id" = "posts"."topic_id" JOIN posts replies ON posts.topic_id = replies.topic_id AND posts.reply_to_post_number = replies.post_number JOIN topics ON replies.topic_id = topics.id AND topics.archetype <> 'private_message' AND replies.post_type IN (1) WHERE "posts"."deleted_at" IS NULL AND (posts.post_type IN (1,4)) AND "topics"."deleted_at" IS NULL AND (topics.archetype <> 'private_message') AND "topics"."visible" = TRUE AND (topics.category_id IS NULL OR topics.category_id IN (SELECT id FROM categories WHERE NOT read_restricted OR id IN (4,8,20,46,55,60,62,67))) AND "posts"."user_id" = 5318 AND (replies.user_id <> posts.user_id) GROUP BY "replies"."user_id" ORDER BY COUNT(*) DESC LIMIT 6
2024-05-24 20:49:12.728 UTC [2919] discourse@discourse LOG: could not send data to client: Broken pipe
2024-05-24 20:49:12.729 UTC [2919] discourse@discourse FATAL: connection to client lost

