13

私は最近、私の会社が取り組んでいるプロジェクトの別の部分を引き継ぎ、RabbitMQ/Celery セットアップでメモリ リークと思われるものを発見しました。

私たちのシステムには 2Gb のメモリがあり、常に約 1.8Gb の空き容量があります。大量のデータを処理してデータベースに追加する複数のタスクがあります。

これらのタスクが実行されると、かなり大量のメモリが消費され、使用可能なメモリが 16Mb から 300Mb の間のどこかに急速に減少します。問題は、これらのタスクが終了した後、メモリが戻ってこないことです。

私たちは使用しています:

  • RabbitMQ v2.7.1
  • AMQP 0-9-1 / 0-9 / 0-8 (RabbitMQ startup_log からこの行を取得)
  • セロリ 2.4.6
  • ジャンゴ 1.3.1
  • amqplib 1.0.2
  • ジャンゴセロリ2.4.2
  • 昆布 2.1.0
  • パイソン 2.6.6
  • アーラン5.8

私たちのサーバーは Debian 6.0.4 を実行しています。

このセットアップは初めてなので、この問題の原因を特定するのに役立つ情報が他に必要な場合は、お知らせください。

すべてのタスクに戻り値があり、すべてのタスクに ignore_result=True があり、CELERY_IGNORE_RESULT が True に設定されています。

どうぞよろしくお願いいたします。

私の現在の設定ファイルは次のとおりです。

CELERY_TASK_RESULT_EXPIRES = 30
CELERY_MAX_CACHED_RESULTS = 1
CELERY_RESULT_BACKEND = False
CELERY_IGNORE_RESULT = True
BROKER_HOST = 'localhost'
BROKER_PORT = 5672
BROKER_USER = c.celery.u
BROKER_PASSWORD = c.celery.p
BROKER_VHOST = c.celery.vhost
4

2 に答える 2

2

このセットアップを DEBUG=True で実行していると、メモリリークが発生することはほぼ確実です。

この投稿を確認してください: Disable Django Debugging for Celery .

役立つ場合に備えて、構成を投稿します。

設定.py

djcelery.setup_loader()
BROKER_HOST = "localhost"
BROKER_PORT = 5672
BROKER_VHOST = "rabbit"
BROKER_USER = "YYYYYY"
BROKER_PASSWORD = "XXXXXXX"

CELERY_IGNORE_RESULT = True
CELERY_DISABLE_RATE_LIMITS = True
CELERY_ACKS_LATE = True
CELERYD_PREFETCH_MULTIPLIER = 1
CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"
CELERY_ROUTES = ('FILE_WITH_ROUTES',)
于 2012-04-24T17:13:59.840 に答える
1

でこの問題が発生している可能性がありますlibrabbitmq。Celery が を使用しているかどうかを確認してくださいlibrabbitmq>=1.0.1

試す簡単な修正方法は次のとおりpip install librabbitmq>=1.0.1です。

于 2013-07-09T06:58:49.420 に答える