2012-07-01 31 views
6

Tôi đang sử dụng đá quý sidekiq để xử lý các công việc nền trong Rails. Đối với một số lý do, công việc chỉ treo sau một thời gian - quá trình hoặc không phản hồi, hiển thị trên top nhưng không nhiều khác, hoặc biến mất bí ẩn, không có lỗi (không có gì được báo cáo cho airbrake.io).Công việc Sidekiq dài chạy tiếp tục chết

Có ai đã từng trải nghiệm điều này không?

Trả lời

7

Sử dụng tín hiệu TTIN để có được một backtrace của tất cả các chủ đề trong quá trình để bạn có thể tìm ra nơi mà các công nhân đang bị mắc kẹt.

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

+1

Bạn sử dụng điều đó như thế nào? – Avishai

+4

'kill -TTIN # {worker_pid}' –

1

Tôi đã trải nghiệm điều này và chưa tìm thấy giải pháp/nguyên nhân gốc rễ.

Tôi không thể giải quyết vấn đề này một cách rõ ràng nhưng đã xảy ra lỗi.

Tôi đã định cấu hình Thiên Chúa để giám sát các quy trình Sidekiq của mình và khởi động lại chúng nếu tệp đã thay đổi.

Sau đó, tôi thiết lập Công việc Cron chạy 5 phút một lần để kiểm tra tất cả công nhân Sidekiq hiện tại cho một hàng đợi. Nếu một số% công nhân có thời gian bắt đầu là < = 5 phút trước đây, điều đó có nghĩa là những người lao động đó đã treo vì một lý do nào đó. Nếu điều đó xảy ra, tôi đã chạm vào một tập tin, điều đó làm cho Thiên Chúa khởi động lại Sidekiq. Đối với tôi, 5 phút là lý tưởng nhưng nó phụ thuộc vào thời gian công việc của bạn thường chạy.

Đây là cách duy nhất tôi có thể giải quyết việc treo Sidekiq mà không tự kiểm tra chúng mỗi giờ và tự khởi động lại.

+2

Bạn có thể chia sẻ tập lệnh này không? –

Các vấn đề liên quan