2012-07-01 39 views
6

Estoy usando la gema sidekiq para procesar trabajos en segundo plano en Rails. Por alguna razón, el trabajo simplemente se cuelga después de un tiempo: el proceso deja de responder, aparece en top pero no mucho más, o desaparece misteriosamente, sin errores (no se informa nada a airbrake.io).Los trabajos de larga duración de Sidekiq siguen muriendo

¿Alguien ha tenido experiencia con esto?

Respuesta

7

Utilice la señal TTIN para obtener un seguimiento de todos los hilos en el proceso para que pueda averiguar dónde están trabajados los trabajadores.

https://github.com/mperham/sidekiq/wiki/Signals

+1

¿Cómo se usa eso? – Avishai

+4

'kill -TTIN # {worker_pid}' –

1

que he experimentado esto, y no he encontrado una causa/solución de raíz.

No pude resolver esto limpiamente, pero se me ocurrió un truco.

Configuré God para supervisar mis procesos de Sidekiq, y para reiniciarlos si un archivo cambiaba.

Luego configuré un Cron Job que se ejecutaba cada 5 minutos y comprobaba la cola de todos los trabajadores actuales de Sidekiq. Si un determinado% de los trabajadores tenía un tiempo de inicio de < = 5 minutos en el pasado, significaba que esos trabajadores estaban colgados por algún motivo. Si eso sucedió, toqué un archivo, lo que hizo que Dios reiniciara Sidekiq. Para mí, 5 minutos fue ideal, pero depende de la duración de tus trabajos.

Esta es la única forma en que podría resolver colgar trabajos de Sidekiq sin verificarlos manualmente cada hora y reiniciarlo yo mismo.

+2

¿Podría compartir este script? –

Cuestiones relacionadas