Форум Discourse зависает и истекает время ожидания, не загружается

Недавно наш форум на Discourse начал выдавать тайм-ауты на большинстве запросов: https://caddy.community

Никаких обновлений или изменений не вносилось, когда это началось несколько дней назад. Иногда всё загружается нормально, но через несколько минут загрузка занимает минуты. (Если ссылка выше загружается быстро у вас, попробуйте снова через несколько минут. Также можно попробовать через curl.)

Мы размещены на DigitalOcean.

Ресурсы машины не исчерпаны: доступно достаточно CPU, RAM, дискового пространства и сетевого ввода-вывода.

В логах нет ошибок, и на машине не запущено никаких неизвестных процессов. Форум работал без проблем около 3 лет, но теперь не загружается.

Кто-нибудь знает, как ускорить работу форума? Мы перезагрузили машину, но форум всё ещё работает медленно.

Привет @mholt :wave:,

Я пробовал переключаться между /latest и /categories, и это работает довольно быстро.

Вы замечаете замедление на конкретных маршрутах приложения?

Также включён ли у вас MiniProfiler?

Чтобы включить его, следуйте этой инструкции: Long loading times for user summary page with slow database - #6 by Falco

После включения, когда вы столкнётесь с замедлением, вы точно узнаете, где именно оно возникает.

Хм… черт, сегодня загружается быстрее. :thinking: (У других в нашем сообществе тоже такое было, я знаю, что не только у меня, ха-ха — но, похоже, это происходит с перебоями.)

Попробую, как будет время, спасибо!

Хм, похоже, что мои подключения по ssh тоже иногда завершаются по тайм-ауту.

Интересно, нет ли у DigitalOcean проблем с сетью (хотя они пока ничего не сообщали) — возможно, придётся открыть тикет в DO, чтобы выяснить. Возможно, это не специфично для Discourse.

Это снова началось в последнее время: загрузка форума занимает несколько минут.

Время отклика (ping) до DigitalOcean droplet в норме: ~80 мс. Нагрузка на сервер также в норме:

Данные в отладочном окне в углу (MiniProfiler) не показывают никаких проблем: все значения в пределах ~300 мс:

(Загрузка этой страницы заняла около 3 минут.)

Есть ли какая-то часть процесса загрузки между обращением к серверу и отображением страницы, которая не учитывается MiniProfiler?

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

Интересно, есть ли какие-то советы, как это сделать? Или ссылка на соответствующее руководство? Это выше моей квалификации :sweat_smile:

Позвольте мне немного поправить себя. Время, затраченное на Redis, не будет отображаться в детализированной части MiniProfiler, но будет учтено в общем времени в первой колонке. Поэтому, судя по вашему скриншоту, это не так.

Фиксирует ли Caddy время ожидания бэкенда и общее время, затраченное на каждый запрос? Возможно, реверс-прокси просто ждал?

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

Может быть, это время, которое требуется для загрузки статических ресурсов? В следующий раз, когда это произойдет, попробуйте посмотреть в инструментах разработчика Chrome?

Спасибо за идею, Сэм. Я уже смотрел в инспектор сети, но не припоминаю ничего особенно показательного — однако в следующий раз проверю его более внимательно.

Это обычно случается раз в несколько дней, я сообщу, когда это произойдёт!