안녕하세요,
새로 설치한 Discourse에서 기이한 문제를 겪고 있어 조언을 구합니다.
환경
- Discourse Docker (최신 안정판)
- Ubuntu 24.04
discourse_docker를 사용한 신규 설치- OpenID Connect를 제외한 플러그인 없음
- Git 저장소가 클린 상태
- nginx 리버스 프록시
- HTTP만 사용 (아직 HTTPS 없음)
- 로컬 Git 저장소가 존재하며
latest브랜치에 있음
기이한 동작
익명 사용자:
홈 페이지가 정상적으로 로드됨
일반 인증 사용자:
정상적으로 작동
OpenID Connect를 통해 인증된 사용자:
정상적으로 작동
하지만 모든 로컬 Discourse 관리자(admin) 사용자는 타임아웃이 발생하고 결국 다음과 같은 오류가 나타납니다:
Oops
The software powering this discussion forum encountered an unexpected problem.
또는 때로는
Server is currently experiencing high load.
테스트한 내용
다음 명령을 사용하여 완전히 새로운 로컬 관리자를 생성했습니다.
rake admin:create
결과:
- 관리자(Admin)로 사용자 설정 →
500 타임아웃 - 같은 사용자의 다음 설정을 변경한 후
u.admin = false
u.save!
→
즉시 정상 작동
따라서 이 문제는 admin == true일 때만 재현됩니다.
로그
워커(worker)는 항상 약 30초 후 타임아웃됩니다.
백트레이스(Backtrace):
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
는 약 7ms 만에 반환됩니다.
또한:
git merge-base --is-ancestor <current_commit> HEAD
도 즉시 반환됩니다.
즉, Git 자체는 느리지 않습니다.
Redis
new_features가 존재하지 않는 것으로 보입니다:
redis-cli exists new_features latest_new_feature_created_at
(integer) 0
질문
모든 Git 명령이 셸에서 즉시 실행되는 반면, 왜 GitUtils.has_commit?는 관리자 사용자에 대해서만 블로킹(block)될까요?
최근 Discourse 버전에서 DiscourseUpdates나 new_features가 관리자 전용 타임아웃을 유발하는 알려진 문제가 있을까요?
다음으로 어떤 부분을 조사해야 할지 아이디어가 있다면 감사하겠습니다.
감사합니다!