私は最近、私の会社が取り組んでいるプロジェクトの別の部分を引き継ぎ、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