활동량이 많은 사용자의 Rewind 페이지에서 502 오류 / Unicorn Timeout 발생

안녕하세요 :waving_hand:

Discourse Rewind 플러그인에서 문제가 발생하고 있습니다. 가장 활동적인 사용자 중 일부의 경우 Rewind 페이지가 로드되지 않고 502 오류가 반환됩니다.

  • 이 문제는 데이터 집계 과정에서 타임아웃으로 인해 발생하는 것으로 보입니다.
  • 활동량이 많은 사용자에게는 일관되게 발생하지만, 평균적인 활동량의 사용자에게는 정상적으로 작동합니다.
  • 로그에 따르면, Unicorn 워커가 데이터베이스 쿼리를 실행하는 동안 타임아웃 한도를 초과하여 USR2 신호를 수신한 것으로 나타납니다.

콘솔 오류:

로그 경고:

Message

Unicorn worker received USR2 signal indicating it is about to timeout, dumping backtrace for main thread
config/unicorn.conf.rb:204:in `backtrace'
config/unicorn.conf.rb:204:in `block (2 levels) in reload'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rack-mini-profiler-4.0.1/lib/patches/db/pg/alias_method.rb:112:in `exec'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rack-mini-profiler-4.0.1/lib/patches/db/pg/alias_method.rb:112:in `async_exec'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.4/lib/active_record/connection_adapters/postgresql/database_statements.rb:167:in `perform_query'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:556:in `block (2 levels) in raw_execute'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.4/lib/active_record/connection_adapters/abstract_adapter.rb:1017:in `block in with_raw_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-8.0.4/lib/active_support/concurrency/null_lock.rb:9:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.4/lib/active_record/connection_adapters/abstract_adapter.rb:986:in `with_raw_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:555:in `block in raw_execute'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-8.0.4/lib/active_support/notifications/instrumenter.rb:58:in `instrument'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.4/lib/active_record/connection_adapters/abstract_adapter.rb:1137:in `log'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:554:in `raw_execute'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:591:in `...

Backtrace

/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-8.0.4/lib/active_support/broadcast_logger.rb:218:in `block in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-8.0.4/lib/active_support/broadcast_logger.rb:217:in `map'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-8.0.4/lib/active_support/broadcast_logger.rb:217:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-8.0.4/lib/active_support/broadcast_logger.rb:129:in `warn'
/var/www/discourse/lib/signal_trap_logger.rb:40:in `public_send'
/var/www/discourse/lib/signal_trap_logger.rb:40:in `block (2 levels) in ensure_logging_thread_running'
<internal:kernel>:187:in `loop'
/var/www/discourse/lib/signal_trap_logger.rb:37:in `block in ensure_logging_thread_running'

감사합니다

3개의 좋아요

@Don 감사합니다. 여기서 말하는 규모는 어느 정도인가요? 이 사용자가 얼마나 활발한지에 대한 힌트를 주실 수 있을까요? (연간 게시물 수 / 연간 좋아요 수)

2개의 좋아요

네, 지난해 두 명의 영향받은 사용자의 통계를 다음과 같이 공유합니다:

사용자 1

  • 생성된 게시물: 11,709개
  • 남긴 반응: 41,569개
  • 받은 반응: 74,603개

사용자 2

  • 생성된 게시물: 5,959개
  • 남긴 반응: 37,974개
  • 받은 반응: 38,875개

두 사용자 모두 502 오류를 발생시키며, 이는 사용자 2의 상대적으로 낮지만 여전히 높은 활동량에서도 타임아웃 임계값에 도달했음을 시사합니다.

1개의 좋아요

돈, 정말 감사해. 앞으로 몇 주 안에 누군가 확인해 줄 거야.

1개의 좋아요

이 수정이 도움이 될 것 같습니다:

4개의 좋아요