您的位置:首页 > 编程语言 > Go语言

Celery在Django下使用的内存泄漏问题

2016-07-19 15:12 573 查看
在django下使用celery作为异步任务系统,十分方便。

同时celery也提供定时任务机制,celery beat。使用celery beat 可以为我们提供 cron,schedule 形式的定时任务。

在django下使用celery beat的过程中,发现了 celery beat进程 占用内存非常大,而且一直不释放。

怀疑其有内存占用不释放的可能。

因为之前使用django的时候,就知道在django中开启DEBUG模式,会为每次的SQL查询 缓存结果。

celery beat 作为 定时任务的timer和heartbeat程序,是长期运行的,而我使用了MYSQL作为存储定时任务的backend。因为每次heartbeat和timer产生的sql查询在开启了DEBUG模式下的django环境中,都会缓存查询结果集。因此 celery beat占用的 内存会一直不释放。在我的线上环境中 达到10G内存占用!

解决: 关掉django的DEBUG模式,在setting中,设置DEBUG=False 即可。

关闭DEBUG模式后的celery beat程序 的内存占用大概 一直维持在150M左右。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  django 异步 内存泄露