Привет, @ariznaf
Утром проснулся после 12 часов без интернета, переключился обратно на конфигурацию socket-only.yml — и всё снова работает как надо.
Так что, по крайней мере, в нашей части обширного «дискурсовселенной», в мире двух контейнеров с nginx как обратным прокси к unix-сокету, снова всё хорошо.
Мы перешли на конфигурацию с nginx в качестве фронтенда примерно за шесть часов до того, как была замечена аномалия, и всё было в порядке.
Исходя из этого полезного совета от @riking (как всегда, большое спасибо, Кейн):
Различные уменьшенные версии аватаров не включаются в резервную копию, только оригиналы. Периодически запланированной задаче потребуется время, чтобы обработать все аватары и сгенерировать их уменьшенные версии.

Моя лучшая гипотеза: когда мы переключились на nginx, мы не заметили никаких проблем, потому что множество изображений аватаров уже были закэшированы, а процесс регенерации ещё не завершился. Со временем кэш для этих изображений истёк, и аномалия начала проявляться.
Так что я отключился от сети (контейнер socket-only.yml продолжал работать в фоне, но бездействовал) на 12 часов, утром проснулся, и sidekiq за ночь совершил своё волшебство (здесь), как и сказал @riking (отличная поддержка, кстати, Кейн, на каждой теме здесь, на meta).
Этот сценарий, похоже, подтверждает предположение @riking.
Честно говоря, чем больше мы используем Discourse, тем больше он нам нравится. Эти сбои и аномалии очень интересны, а конфигурация из двух контейнеров действительно отлична.
Наши контейнеры сейчас выглядят так:
# ls -l containers
-rw-r--r-- 1 discourse root 1124 Apr 15 11:29 data.yml
-rw-r--r-- 1 discourse root 3939 Apr 16 07:45 socket-only.yml
-rw-r--r-- 1 discourse root 3784 Apr 16 07:28 socket.yml
-rw-r--r-- 1 discourse root 3921 Apr 15 11:50 web-only.yml
Мне нравится, что даже когда возникает проблема, например эта аномалия регенерации аватаров, мы можем легко переключаться между socket-only.yml и web-only.yml.
В данном случае мы вернулись к web-only (во время регенерации), а затем снова переключились после завершения процесса (поскольку все контейнеры продолжали работать). При пересборке контейнеров мы можем очень легко переключаться между этими конфигурациями.
После двух десятилетий работы с LAMP-форумами, мы всё больше впечатлены Discourse, особенно с точки зрения системного администрирования.
Сайдбар (редакторское замечание):
Конечно, это выше моего уровня на meta, но я считаю, что базовая конфигурация из двух контейнеров (без обратного прокси) должна быть по умолчанию, поскольку она очень проста в настройке, и мы получаем от неё гораздо больше пользы, чем любые предполагаемые «штрафы» за наличие двух файлов yml.