2017-07-28 19 views
11

Chúng tôi đang sử dụngProcess CeleryBeat tiêu thụ tất cả các bộ nhớ OS

django-celery==3.1.10 
celery==3.1.20 
python 2.7.13 

Chúng tôi đã viết một CustomDataBaseScheduler để sắp xếp công việc, mà lịch trình công việc một cách hoàn hảo đúng thời hạn. Chúng tôi đang chạy quá trình CeleryBeat như init script, nhưng celeryBeat tiêu thụ toàn bộ bộ nhớ của hệ thống, tức là 24GB trong một ngày.

Tôi đã cố gắng chạy pmap trên quy trình celerybeat, nhưng nó cho thấy [anon] đã chiếm nhiều bộ nhớ nhất.

Ai đó có thể giúp bạn gỡ lỗi và khắc phục sự cố này.

+0

Bạn có xem xét bất kỳ tùy chọn hết giờ nào hay không, như 'CELERYD_TASK_TIME_LIMIT'? https://stackoverflow.com/questions/17541452/celery-does-not-release-memory –

+0

Bất kỳ cơ hội nào bạn đang chạy với debug = True trên settings.py? Được biết rằng điều này gây ra rò rỉ bộ nhớ trên cần tây: https://groups.google.com/forum/#!topic/celery-users/smV5tw59Ia4 – Tico

+0

Di chuyển đến http://serverfault.com/? – Spacedman

Trả lời

3

Trước hết, nếu bạn đang sử dụng django 1.8 trở lên, hãy sử dụng cần tây 4.0 trở lên. Trong trường hợp đó, bạn sẽ không yêu cầu django-cần tây. Cũng trong trường hợp đó, hãy làm theo hướng dẫn này. http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html

Đến với vấn đề của bạn có thể là một trong những lý do sau:

  1. nhân của bạn đang quá tải. Hãy thử sử dụng đồng thời như đã đề cập here
  2. Kiểm tra xem cài đặt django của bạn DEBUG được đặt thành True hay không. Nó có thể gây ra rò rỉ bộ nhớ và cần tây khuyên chống lại nó khi bạn chạy nó.
  3. Kiểm tra các bản sửa lỗi rò rỉ bộ nhớ trong history. Với tôi nó có vẻ là phiên bản tiếp theo sau của bạn, 3.1.21 để được chính xác có một số sửa chữa rò rỉ bộ nhớ. Hãy thử nâng cấp lên phiên bản 3.x mới nhất (chỉ khi bạn không thể sử dụng 4.x vì bất kỳ lý do nào.)
  4. Nếu vẫn thất bại, hãy thử một số công cụ giám sát để gỡ lỗi kịch bản về những gì đang xảy ra. Một số công cụ giám sát được đề cập đến here.
+0

django là 1,7, vì vậy không thể sử dụng cần tây 4. gỡ lỗi là True trong settings.py nhưng chúng tôi sử dụng init script để bắt đầu cần tây nơi chúng tôi đã sử dụng INFO không gỡ lỗi. –

+0

Tôi có nghĩa là 'debug' trong django settings.py. Khi bạn chạy cần tây với django 'DEBUG = True' trong settings.py, bạn sẽ nhận được [this] (https://github.com/celery/celery/blob/d90caee6d91a0fcc91756329503a35bf8fef720a/celery/fixups/django.py#L202). Tắt gỡ lỗi và kiểm tra xem có hoạt động không. – rmad17

+0

đã thử nâng cấp django-celery == 3.2.1 nhưng nó yêu cầu nâng cấp django> = 1.8 và chúng tôi có django == 1.7 Vì vậy, nâng cấp django-cần tây == 3.1.17 là mới nhất trong 3.1. Cũng sẽ thử với debug = False. –

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