Tôi có sau thiết lập:Làm thế nào để theo dõi sức khỏe hàng đợi trong cần tây
- Generic hồ bơi công nhân với 100 công nhân
- ưu tiên cao Bể lao động với 50 công nhân
- Tôi đã từng như vậy với số lượng lớn vì hầu hết thời gian nhiệm vụ của tôi dành cho I/O chờ thời gian chờ rất dài (thực hiện các yêu cầu HTTP có thể mất đến 20 giây để trả lời)
- Sử dụng RabbitMQ làm nhà môi giới
- Tôi đã thiết lập celeryd làm deamon bằng cách sử dụng init .d scripts từ celery'd github, với các thông số sau:
CELERYD_OPTS="--time-limit=600 -c:low_p 100 -c:high_p 50 -Q:low_p low_priority_queue_name -Q:high_p high_priority_queue_name"
Vấn đề của tôi là, đôi khi hàng đợi dường như "sao lưu" ... đó là nó sẽ ngừng nhiệm vụ tiêu thụ. Có vẻ như có các kịch bản cho việc này:
- Có một chậm build-up thông điệp "không được thừa nhận" trong môi giới, mặc dù
celery inspect active
sẽ cho thấy rằng không phải tất cả người lao động được sử dụng hết - nghĩa là, tôi sẽ chỉ xem một số tác vụ đang hoạt động - Hàng đợi sẽ ngừng tiêu thụ các tác vụ mới mà không cần tích lũy.
- Khi nó trạng thái "chết", sử dụng
strace
trên nhân xử lý lợi nhuận không có gì ... hoàn toàn không hoạt động từ người lao động
tôi sẽ đánh giá cao bất kỳ thông tin hoặc gợi ý về:
- thế nào Tôi có thể gỡ lỗi nó. Tôi có thể sử dụng
strace
để xem quy trình công nhân đang làm gì, nhưng cho đến nay đã hữu ích khi nói với tôi rằng nhân viên đang treo - Cách tôi có thể giám sát việc này và có thể tự động khôi phục. Có rất nhiều công cụ để quản lý cần tây (
flower
vàevents
nhưng chúng đều tuyệt vời trong thời gian thực - nhưng không có bất kỳ chức năng giám sát/báo động tự động nào). Tôi có tốt hơn khi viết các công cụ theo dõi của riêng mình với supervisord không?
Ngoài ra, tôi đang bắt đầu nhiệm vụ của tôi từ django-cần tây
Cuối cùng bạn đã giải quyết được vấn đề này chưa? – bouke
Đây là cũ, nhưng hai nguyên nhân của hàng đợi sao lưu mà tôi biết là: (1) bạn đang tạo các tác vụ trong các tác vụ. Nếu bạn làm điều đó, cuối cùng bạn sẽ nhận được điểm mà bạn không có một nhân viên để tiêu thụ nhiệm vụ trong một nhiệm vụ, và bạn sẽ đóng băng. (2) Nếu bạn đang sử dụng các yêu cầu, để thực hiện nhiều lượt tải xuống hoặc bất kỳ nội dung tải xuống nào, nó không có thời gian chờ mặc định, vì vậy nó có thể đóng băng hoàn toàn nếu bạn gặp lỗi tải xuống. Một khi một công nhân bị đóng băng, nó đã xong. – mlissner