Django 内存泄漏:可能原因?
我有一个Django应用程序,时不时会出现内存泄漏的问题。
我使用的数据并不大,不会让内存过载,实际上这个应用的内存是逐渐增加的(比如一周内内存从大约70MB增加到4GB),所以我怀疑垃圾回收器可能漏掉了一些东西,但我不太确定。此外,这种内存增加似乎和请求的数量没有关系。
一些明显的原因,比如设置了DEBUG=True
、打开了文件等,这些都不适用。
我使用的是uWSGI 2.0.3
(加上nginx)和Django 1.4.5
。
我可以设置wsgi
,让服务器在内存超过某个限制时重启,但我不想这样做,因为这并不是一个真正的解决办法。
有没有一些大家都知道的情况,导致垃圾回收器“工作不正常”?能否提供一些代码示例?
uWSGI和Django的配置中,有没有可能导致这个问题的地方?
2 个回答
3
Django并没有被发现有内存泄漏的问题。
我之前也遇到过类似的内存问题。我发现是因为有一个慢查询导致数据库的CPU使用率很高。解决了这个慢查询后,内存问题也就解决了。
35
我没有找到完全符合我需求的内容(每个项目都是一个独特的世界!),但通过一些线索和建议,我成功解决了问题。这里分享一些链接,如果你遇到类似的问题,可能会对你有帮助。
Django内存泄漏,第一部分,Django内存泄漏,第二部分,还有在Python中查找和修复内存泄漏
一些有用的StackOverflow回答和问题: 推荐哪个Python内存分析工具?,有没有适用于Python3的内存分析工具?,Python内存泄漏,还有Python:内存泄漏调试
更新
pyuwsgimemhog是一个新工具,可以帮助你找出内存泄漏的来源。