2012-07-01 20 views
6

Rails'de arka plan işlerini işlemek için sidekiq gem kullanıyorum. Herhangi bir nedenden ötürü, iş sadece bir süre sonra askıda kalıyor - bu süreç ya tepkisizleşiyor, top üzerinde görünmüyor, fakat başka bir şey değil, ya da gizemli bir şekilde kayboluyor, hatalar olmadan (hiçbir şey airbrake.io'ya rapor edilmiyor).Uzun süredir çalışan Sidekiq işleri devam ediyor

Bu konuda deneyim sahibi olan var mı?

cevap

7

İşlemdeki tüm parçacıkların bir arka planını almak için TTIN sinyalini kullanın, böylece işçilerin nerede sıkıştığını anlayabilirsiniz.

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

+1

Bunu nasıl kullanıyorsunuz? – Avishai

+4

'kill -TTIN # {worker_pid}' –

1

bu yaşadıysanız ve çözüm/kök neden bulamadık.

Bunu temiz bir şekilde çözemedim, ancak bir kesmek ile geldi.

Sidekiq işlemlerimi izlemek ve bir dosya değiştiyse bunları yeniden başlatmak için Tanrı'yı ​​yapılandırdım.

Daha sonra, tüm geçerli Sidekiq çalışanlarını bir sıra için kontrol eden her 5 dakikada bir çalışan bir Cron Job kuruyorum. Eğer işçilerin belirli bir yüzdesi başlangıç ​​saatinde < = 5 dakika olmuşsa, bu işçiler bir sebepten ötürü asılı kalıyordu. Eğer olduysa, Tanrı'ya Sidekiq'i yeniden başlatan bir dosyaya dokundum. Benim için 5 dakika idealdi ama işlerin tipik olarak ne kadar sürdüğüne bağlı.

Bu, Sidekiq işlerini her saatte el ile kontrol etmeden askıya almamın tek yolu ve kendim yeniden başlatma.

+2

Bu komut dosyasını paylaşır mısınız? –