레일즈에서 백그라운드 작업을 처리하기 위해 sidekiq gem을 사용하고 있습니다. 웬일인지, 그 일은 단지 잠시 멈춘다. 과정은 응답이 없어져 top
에 나타나지만 그다지 그렇지 않거나, 이상한 일없이 오류없이 사라진다 (아무것도 airbrake.io에보고되지 않는다).장기 실행 Sidekiq 작업 계속 죽는다
아무도이 경험이 있습니까?
레일즈에서 백그라운드 작업을 처리하기 위해 sidekiq gem을 사용하고 있습니다. 웬일인지, 그 일은 단지 잠시 멈춘다. 과정은 응답이 없어져 top
에 나타나지만 그다지 그렇지 않거나, 이상한 일없이 오류없이 사라진다 (아무것도 airbrake.io에보고되지 않는다).장기 실행 Sidekiq 작업 계속 죽는다
아무도이 경험이 있습니까?
TTIN 신호를 사용하여 프로세스의 모든 스레드에 대한 백 트레이스를 얻을 수 있으므로 작업자가 멈추는 위치를 파악할 수 있습니다.
나는이 경험했던 및 솔루션/근본 원인을 발견하지 않았습니다.
이 문제를 제대로 해결할 수 없지만 해킹이있었습니다.
나는 사이드킥 프로세스를 모니터하고 파일이 변경되면 다시 시작하도록 신을 구성했습니다.
다음 5 분마다 실행되는 Cron 작업을 설정하여 현재의 모든 Sidekiq 작업자를 확인했습니다. 근로자 중 일정 비율 (%)이 과거에 < = 5 분의 시작 시간을 가졌다면 이는 그 이유로 근로자가 어떤 이유로 든 걸린 것을 의미합니다. 그런 일이 생기면 파일을 건드려서 신이 사이드킥을 다시 시작하게 만들었습니다. 나에게는 5 분이 이상적 이었지만 일자리가 얼마나 오래 걸리는가에 달려있다.
이것은 매시간 수동으로 확인하지 않고 Sidekiq 작업을 해결할 수있는 유일한 방법이며 직접 다시 시작합니다.
이 스크립트를 공유 할 수 있습니까? –
어떻게 사용하나요? – Avishai
'kill -TTIN # {worker_pid}' –