Форум работает со сбоями — возможно, после обновления

Длинный пост…

Несколько дней назад я перенёс свой форум на новый сервер. Перенос прошёл успешно, и пользователи могли войти и пользоваться форумом как обычно. Однако через 2–3 часа вошедшие пользователи обнаружили, что не могут им пользоваться. Сначала я не заметил проблему, но через 10–15 минут мой аккаунт тоже перестал работать. Я видел, как страница форума многократно выводилась вниз по странице, но без содержимого: заголовок… немного текста… снова заголовок… снова немного текста… и так далее.

Я предположил, что при переносе что-то пошло не так. Поскольку с момента переноса было опубликовано очень мало сообщений, и у меня всё ещё был доступен старый сервер, я просто запустил форум на старом сервере и указал DNS снова на него. Это дало мне время разобраться, что пошло не так, и попытаться перенести форум ещё раз.

Сегодня мой «старый» форум сообщил, что необходимы критические обновления. Я их установил, и всё казалось в порядке. Однако через час-два старый форум тоже начал демонстрировать ту же странную проблему с отображением, что и перенесённый.

Теперь я думаю, что проблема связана с обновлением. Перенесённый сервер получил последний код при сборке, поэтому проблема проявилась сразу. Старый форум получил обновления только сегодня и вскоре после этого начал работать некорректно.

Пока что я безрезультатно попробовал следующее:

  1. ./launcher rebuild app
  2. Закомментировать все плагины в app.yml и выполнить ./launcher rebuild app
  3. Запуск в безопасном режиме со всеми опциями включёнными
  4. Очистка кэша браузера
  5. Попытки в разных браузерах (Chrome, Edge, Firefox и Opera)

Проблема, похоже, прогрессирует для вошедших пользователей. Сегодня я вошёл под тестовым аккаунтом, и у него проблемы не проявились, но когда я попробовал то же самое на перенесённом сервере, тестовый аккаунт в итоге тоже начал демонстрировать те же проблемы. К сожалению, сейчас я не могу попробовать ничего ещё, потому что мой аккаунт администратора тоже показывает проблему, поэтому он непригоден для использования.

У меня есть резервная копия до обновления, но я подозреваю, что она не поможет. Если я пересоберу форум, он заберёт последние обновления, и если я восстановлю в него контент, он, вероятно, снова начнёт работать некорректно через несколько часов.

Настройка сервера:

Debian 12 с Docker Swarm v26.1.4. Доступно 120 ГБ дискового пространства. 64 ГБ ОЗУ, из которых сейчас используется около 20 ГБ. Подключения к серверу осуществляются через Cloudflare Tunnels. На старом сервере меньше доступного дискового пространства и памяти, но ни один из этих ресурсов не исчерпан.

Я пытаюсь понять, что ещё можно сделать, чтобы вернуть всё в строй. Я открыт для предложений!

Возможно, автоматическая минификация?

Спасибо за предложение.

Оно было включено. Не совсем понимаю почему, так как обычно я его не включаю. Я отключил его (JS, CSS и HTML), но всё ещё вижу повторяющиеся страницы, прокручивающиеся вниз по экрану.

PS. Обратите внимание, что функция автоматической минификации Cloudflare будет отключена в начале августа.

Вы также выполнили инструкции по очистке кэша Cloudflare?

Да. Кэш Cloudflare (и кэш браузера) был очищен после отключения функции auto-minify.

В таком случае я рекомендую проверить консоль разработчика браузера, чтобы убедиться, нет ли ошибок при возникновении проблемы.

Также вы можете снова попробовать безопасный режим, теперь что проблема с Cloudflare решена.

Безопасный режим сейчас работает. В консоли JS нет ошибок, кроме предупреждения об устаревании часового пояса. Я собираюсь вернуться к теме по умолчанию и отключить все компоненты темы, чтобы проверить, работает ли всё нормально вне безопасного режима, а затем включать их по одному, чтобы попытаться сузить круг проблем.

Мне понадобится немного времени, прежде чем я смогу подтвердить, как всё идёт, потому что «Такси папы» отправляется в путешествие!

Похоже, что виновником оказался авто-минификатор. Не знаю, как и когда он был включён. Я не делал этого сознательно, так как в прошлом уже сталкивался с подобными проблемами в других системах. Моя версия в том, что Cloudflare недавно (кажется) добавил кнопку для активации набора базовых настроек, призванных улучшить взаимодействие браузеров с веб-сайтами. Я просмотрел предложенные изменения и включил те, которые казались разумными и безопасными. Теперь я снова заглянул в настройки и не нашёл там упоминания об авто-минификации, но возможно, она была включена как часть «базовых настроек»?

Кэш Cloudflare также объясняет, почему проблема внезапно проявилась через несколько часов после обновления Discourse. У меня установлено кэширование в браузере Cloudflare с TTL 4 часа. После обновления я не очистил кэш Cloudflare, поэтому в течение нескольких часов пользователи всё ещё получали старые «хорошие» файлы, которые они видели в течение недель после последнего обновления Discourse. Затем, через 4 часа, Cloudflare начал обновлять собственный кэш, обнаружил новые файлы Discourse и минифицировал их перед добавлением в кэш. Когда браузеры запрашивали обновления для своих собственных кэшей, они получали повреждённые файлы. Поскольку браузеры обновляли свои кэши в разное время, каждый пользователь сталкивался с проблемами в разные моменты.

Извлечённые уроки:

  1. Очищайте кэш Cloudflare после применения обновления Discourse. Теперь это кажется очевидным, но раньше я об этом не думал!
  2. Не включайте авто-минификацию. Я, должно быть, сделал это, но не знаю, как и когда. Я уже знал, что это плохая идея, так как однажды сломал сайт на Wordpress с её помощью, но этот случай ещё раз подтвердил это.

Большое спасибо @JammyDodger и @david за помощь в решении этой проблемы :smiley: