Django 1.6 和 Celery 3.0 内存泄漏

2024-03-01

将 Django 升级到 1.6 后,我的 celery Worker 正在耗尽 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)在 celery 与 Upstart 一起运行的暂存环境中手动运行工作程序。


Updates:

  1. 尝试设置autocommit=False没有成功。
  2. 可能它与 Django 版本升级无关,而是与我必须升级才能切换到 1.6 的某些设置或第 3 方包相关。

事实证明,内存泄漏并不是由 Django 升级或 Celery 直接引起的。

经过大量挖掘后,我发现,令人惊讶的是,芹菜工人内存泄漏发生是因为我升级了django 调试工具栏 from 0.9.4 to 0.11.0(这是 Django 1.6 兼容性所必需的)。

仍然不知道到底是什么导致了这个问题,或者为什么它只发生在 celery 工作进程中而不是应用程序服务器进程(Gunicorn)中。

去除django-debug-toolbar从安装的应用程序和中间件解决了这个问题。至少暂时如此。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django 1.6 和 Celery 3.0 内存泄漏 的相关文章

随机推荐