다양한 경로에서 500 Internal Server Error 발생

안녕하세요,

반복적으로 발생하는 500 Internal Server Error를 디버깅하려고 하고 있습니다.
먼저 환경 구성을 말씀드리면 (이것이 이상적이지 않고 Docker를 사용한 권장 배포 방식이 아님을 알고 있습니다):

  • discourse 2.3.8
  • ruby 2.7.2 (snap 사용)
  • redis-server 5:4.0.9-1ubuntu0.2 (ubuntu 패키지)
  • postgresql 10.15 (다른 호스트에 설치됨)

config/environments/production.rb 파일을 편집하여 다음 설정을 적용했습니다.

config.log_level = :debug

200 응답과 섞여 나타나는 오류의 예시는 여기(게시물에 링크를 2개 이상 올릴 수 없어 나머지 내용도 포함)에서 확인할 수 있습니다: https://pastebin.ubuntu.com/p/D4q7HmcNPj/

특정 유형의 요청이 500 오류를 유발하는지 확인해 보았는데, 실제로 일종의 패턴이 있습니다(이전 pastebin 참조).

현재로서는 더 이상 디버깅할 방법을 찾지 못하고 있습니다.
이것이 버그인지 확실하지 않고, 불행히도 재현할 방법도 없습니다. 이러한 오류는 하루 종일 200 응답 사이에 무작위로 발생합니다. 이는某种 락/경쟁 조건 문제일 수 있지만, 추가 로그가 없기 때문에 문제의 원인을 정확히 파악하기 어렵습니다.

혹시 이것이 문제의 원인이라면 현재 프로세스에 사용 중인 제한 사항은 다음과 같습니다: https://pastebin.ubuntu.com/p/ZZDrRNtbv4/

더 이상 디버깅하는 방법에 대한 도움이 크게 필요합니다.

감사합니다,

Discourse 2.3.8은 매우 오래된 버전이며, 2.7.2와 같은 최신 Ruby와 호환되지 않습니다.

Discourse 2.5.6, 2.6 및 2.7이 Ruby 2.7.2와 호환되는 것을 알고 있습니다.

라파엘님,

답변 주셔서 감사합니다. 저희도 가까운 시일 내에 업그레이드를 진행하여 지원되는 배포 방식을 사용하겠습니다.

저는 주로 config/environments/production.rb 파일을 수정하는 것 외에 디버그 메시지를 늘리는 방법을 찾고 있었습니다.

logster(Discourse Logging Improvements)를 사용할 수 있다는 것을 알았지만, 저희 경우에는 유용한 정보를 제공하지 못합니다(500 오류와 관련이 있는지 확인하기 위해 초 단위 정보가 필요합니다). 또한, 아마도 Ruby/Discourse 버전 불일치로 인해 너무 많은 오류가 발생하고 있습니다.

조금 더 살펴보겠지만, "가까운 시일 내"보다 훨씬 “빠르게” 업그레이드를 진행할 것입니다. :slight_smile:

감사합니다!