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左右。
同时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左右。
相关文章推荐
- ruby实现的一个异步文件下载HttpServer实例
- C#异步绑定数据实现方法
- 科学知识:同步、异步、阻塞和非阻塞区别
- 探讨Ajax中同步与异步之间的区别
- C#中异步回调函数用法实例
- c语言内存泄露示例解析
- C#实现异步GET的方法
- C#异步下载文件
- C#异步执行任务的方法
- 简单实现C#异步操作
- 使用Promise解决多层异步调用的简单学习心得
- 深入理解JavaScript编程中的同步与异步机制
- 解决js函数闭包内存泄露问题的办法
- Jquery异步提交表单代码分享
- JQuery异步获取返回值中文乱码的解决方法
- IE下使用jQuery重置iframe地址时内存泄露问题解决办法
- jQuery通过deferred对象管理ajax异步
- Highcharts使用简例及异步动态读取数据
- Ajax异步上传文件实例代码分享
- Node.js 的异步 IO 性能探讨