Error 502 / Tiempo de espera de Unicorn en la página de Rewind para usuarios muy activos

Hola :waving_hand:

Estamos experimentando un problema con el plugin Discourse Rewind. Para algunos de nuestros usuarios más activos, la página de Rewind no se carga y devuelve un error 502.

  • El problema parece ser un tiempo de espera agotado durante el proceso de agregación de datos.
  • Ocurre consistentemente para usuarios con altos niveles de actividad, mientras que funciona bien para usuarios promedio.
  • Los registros indican que el trabajador de Unicorn recibe una señal USR2 porque excede el límite de tiempo de espera mientras ejecuta una consulta a la base de datos.

Error en la consola:

Advertencia en los registros:

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'

Gracias

3 Me gusta

Gracias @Don, ¿de qué escala estamos hablando? ¿Puedes darnos una pista sobre cuán activo es este usuario? (publicaciones por año / “me gusta” por año)

2 Me gusta

Claro, aquí tienes algunas estadísticas para dos de los usuarios afectados:

Usuario 1

  • Publicaciones creadas: 11.709
  • Reacciones dadas: 41.569
  • Reacciones recibidas: 74.603

Usuario 2

  • Publicaciones creadas: 5.959
  • Reacciones dadas: 37.974
  • Reacciones recibidas: 38.875

Ambos usuarios activan el error 502, lo que sugiere que el umbral de tiempo de espera se alcanza incluso con la actividad moderadamente menor (pero aún alta) del Usuario 2.

1 me gusta

Muchas gracias Don, alguien lo revisará en las próximas dos semanas.

1 me gusta

Creo que esta corrección debería ayudar:

3 Me gusta