将 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:
- 尝试设置
autocommit=False
没有成功。
- 可能它与 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(使用前将#替换为@)