Несколько ошибок 503 после обновления

Мы только что обновились с версии 3.0.6 до 3.1.2, и я наблюдаю множество ошибок 503, в основном в трёх точках:

  • Многие аватары не загружаются.
  • Загрузка изображений работает лишь иногда.
  • Также наблюдается множество ошибок для topics/timings.

Я изучил логи сервера: большинство ошибок 503 даже не отображаются в production.log, зато их полно в логах nginx. Подумав, что это может быть связано с ограничением частоты запросов в nginx, я попробовал не использовать файл templates/web.ratelimited.template.yml, но это, похоже, не помогло. Я всё ещё вижу большое количество запросов, завершающихся с кодом 503, в основном это user_avatars/show. Насколько я понял, production.log их вообще не фиксирует.

В Sidekiq ничего подозрительного не заметил. Однако в /logs были ошибки вида:

'hijack user_avatars show ' is still running after 90 seconds on db default, this process may need to be restarted!

Но это произошло несколько часов назад. С тех пор я несколько раз пересоздавал инстанс, и эти ошибки больше не появлялись.

Этот инстанс использует SSO, поэтому аватары (URL) берутся оттуда. Для изображений мы используем S3.

Я немного озадачен тем, что вызывает эти проблемы, и у меня закончились идеи.

Есть ли какие-либо подсказки, куда или на что стоит обратить внимание?

Сколько у вас оперативной памяти? Вы недавно перезагружали сервер?

На сервере 16 ГБ памяти, и он стабильно работал месяцами до обновления.

Это экземпляр AWS, запущенный сегодня, незадолго до обновления (данные Discourse хранятся на томах EBS), для изменения некоторых несвязанных параметров.

Сетевой трафик (входящий и исходящий) значительно вырос после обновления: аватары, похоже, начинают работать через несколько секунд после первой ошибки 503, поэтому я предполагаю, что при первом запросе запускается какой-то процесс.

Однако я не понимаю, почему случайным образом не удаётся загрузка изображений, а также почему не работает эндпоинт topics/timings.

Не уверен, может ли это быть связано с этим:

Возможно, процесс обновления фона аватаров достигает лимита 3500 PUT/с на AWS, из-за чего обычные загрузки не удаются во время обновления аватаров? /cc @sam

Возможно… но должно было проясниться. Прояснилось уже?

Да, отчасти.

Обновление было выполнено утром 21-го. Входящий сетевой трафик, похоже, сейчас нормализуется. Исходящий всё ещё выше обычного, но я предполагаю, что это связано с кэшированием аватаров. Количество ошибок 503 на user_avatars/show сейчас значительно меньше. Я предполагаю, что со временем, по мере обработки большего числа аватаров, ситуация постепенно улучшится.

Однако в логах мы до сих пор видим множество ошибок 503 в основном для двух других эндпоинтов:

POST /topics/timings

По-прежнему много ошибок 503 для этого эндпоинта, и некоторые пользователи сообщают, что посещённые темы не помечаются как прочитанные. Я не нашёл никакой информации об этом, так как запрос, похоже, вообще не логируется в production.log. В /logs тоже ничего связанного с этим нет.

Куда можно обратиться для отладки этих ошибок 503? Есть ли какие-то другие логи, о которых я не знаю, или можно сделать логи более подробными (в продакшн-системе)?

POST /uploads.json?client_id=....

Всё, что я нахожу в production.log для этих ошибок 503, выглядит примерно так:

Выдержка из production.log

Started POST “/uploads.json?client_id=X” for x.x.x.x at 2023-10-24 10:24:55 +0000
Processing by UploadsController#create as JSON
Parameters: {“upload_type”=>“composer”, “relativePath”=>“null”, “name”=>“Screenshot 2023-10-24 at 11.22.32.png”, “type”=>“image/png”, “sha1_checksum”=>“d1f11731320437724003c3840c5dcc5f934ba25a”, “file”=>#<ActionDispatch::Http::UploadedFile:0x00007f3c5e3c9898 @tempfile=#Tempfile:/tmp/RackMultipart20231024-1991-b30vit.png, @content_type=“image/png”, @original_filename=“Screenshot 2023-10-24 at 11.22.32.png”, @headers=“Content-Disposition: form-data; name="file"; filename="Screenshot 2023-10-24 at 11.22.32.png"\r\nContent-Type: image/png\r\n”>, “client_id”=>“X”}
Rendered text template (Duration: 0.0ms | Allocations: 1)
Completed 503 Service Unavailable in 10ms (Views: 0.4ms | ActiveRecord: 0.0ms | Allocations: 5007)

Наши пользователи сообщают, что они пробуют несколько раз, пока не получится… Мне удаётся воспроизвести ошибку более или менее последовательно, если я пытаюсь загрузить (ещё один) файл, пока другой ещё загружается. Загрузка файлов по одному, по какой-то причине, менее подвержена этой проблеме.

# free -h
               total        used        free      shared  buff/cache   available
Mem:            15Gi       3.8Gi       621Mi       1.1Gi        10Gi        10Gi

# lscpu --parse=core | egrep -v ^# | sort -u | wc -l
2
UNICORN_WORKERS: 4

db_shared_buffers: "1024MB"