Привет всем,
У меня возникла странная проблема с новой установкой Discourse, и я буду признателен за любые советы.
Окружение
- Discourse Docker (последняя стабильная версия)
- Ubuntu 24.04
- Чистая установка с помощью
discourse_docker - Нет плагинов, кроме OpenID Connect
- Git-репозиторий чистый
- Обратный прокси-сервер с nginx
- Только HTTP (HTTPS пока нет)
- Локальный Git-репозиторий существует и находится на ветке
latest
Странное поведение
Анонимные пользователи:
Домашняя страница загружается нормально
Обычные аутентифицированные пользователи:
Работают нормально
Пользователи, аутентифицированные через OpenID Connect:
Работают нормально
Но каждый локальный администратор Discourse получает тайм-аут и в итоге:
Ой
Программное обеспечение, обеспечивающее работу этого форума, столкнулось с неожиданной проблемой.
или иногда
Сервер в настоящее время испытывает высокую нагрузку.
Что мы тестировали
Мы создали совершенно нового локального администратора с помощью
rake admin:create
Результат:
- пользователь как администратор →
тайм-аут 500 - тот же пользователь после изменения
u.admin = false
u.save!
→
работает сразу
Таким образом, проблема воспроизводится только когда admin == true.
Лог
Рабочий процесс всегда завершается тайм-аутом примерно через 30 секунд.
Стек вызовов:
GitUtils.try_git
GitUtils.has_commit?
DiscourseUpdates.new_features
DiscourseUpdates.has_unseen_features?
CurrentUserSerializer
ApplicationLayoutPreloader
Тайм-аут всегда происходит здесь:
/var/www/discourse/lib/git_utils.rb:33
Kernel#`
Важное наблюдение
Запуск Git вручную внутри контейнера происходит мгновенно.
Например:
git rev-parse HEAD
возвращает результат примерно за 7 мс.
Также:
git merge-base --is-ancestor <current_commit> HEAD
возвращает результат немедленно.
Таким образом, сам Git не медленный.
Redis
new_features, похоже, не существует:
redis-cli exists new_features latest_new_feature_created_at
(integer) 0
Вопрос
Почему GitUtils.has_commit? блокируется только для администраторов, в то время как все команды Git выполняются мгновенно из командной строки?
Известны ли какие-либо проблемы в последних версиях Discourse, где DiscourseUpdates или new_features вызывает тайм-ауты только для администраторов?
Любые идеи о том, куда двигаться дальше, будут greatly appreciated.
Спасибо!