6

Django を 1.6 にアップグレードした後、セロリ ワーカーが RAM を使い果たしています。ワーカーに割り当てられたメモリは解放されておらず、タスクごとに増加しているようです。

関連設定:

# DB:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'somedb',
        'USER': '',
        'PASSWORD': '',
        'HOST': 'localhost',
        'PORT': '',
    }
}


# CELERY SETTINGS:
CELERY_RESULT_BACKEND = 'redis://'
BROKER_URL = 'redis://'

関連パッケージのバージョン:

Django==1.6
celery==3.0.24
django-celery==3.0.23
billiard==2.7.3.34
kombu==2.5.16
redis==2.7.6

ワーカーを手動で実行しているローカル環境 (を使用DEBUG=False) と、セロリが Upstart で実行されているステージング環境の両方で発生します。


アップデート:

  1. autocommit=False成功せずに設定しようとしました。
  2. Django のバージョン アップグレードとは関係ないのかもしれませんが、1.6 に切り替えるためにアップグレードしなければならなかった設定またはサード パーティのパッケージに関係している可能性があります。
4

2 に答える 2

7

メモリ リークは、Django のアップグレードや Celery が直接原因ではないことがわかりました。

いろいろ調べてみると、驚くべきことに、django-debug-toolbarを から0.9.4にアップグレードしたためにセロリ ワーカーのメモリ リークが発生することがわかりました0.11.0(これは Django 1.6 との互換性に必要です)。

この問題の正確な原因、またはアプリケーション サーバー (Gunicorn) ではなくセロリ ワーカー プロセスでのみ発生する理由はまだわかりません。

django-debug-toolbarインストールされているアプリとミドルウェアから削除すると、問題が解決します。少なくとも一時的に。

于 2013-11-12T14:03:42.657 に答える