我有一个Django应用程序,每隔一段时间就会陷入内存泄漏。
我没有使用可能会使内存过载的大数据,实际上,应用程序逐渐“消耗”了内存(一周内内存从〜70 MB变为4GB),这就是为什么我怀疑垃圾收集器丢失了一些东西,我不确定。另外,似乎此增量与请求数无关。
DEBUG=True
明显的东西,打开的文件等等,在这里不适用。
我正在使用uWSGI 2.0.3
(+ nginx)和Django 1.4.5
我可以设置wsgi
,以便在内存超过特定限制时重新启动服务器,但是我不愿意这样做,因为这实际上不是解决方案。
有没有众所周知的情况,垃圾收集器“无法正常工作”?能否提供一些代码示例?
是否有可能导致uWSGI + Django的任何配置?
我还没有找到我想要的确切东西(每个项目都是一个世界!),但是根据一些线索和建议,我设法解决了这个问题。我与您分享一些链接,如果您遇到类似的问题,这些链接可能会有所帮助。
[django memory leaks, part I,django memory leaks, part II,Finding and fixing memory leaks in Python和Debugging memory leaks in a WSGI application。
一些有用的SO答案/问题:Which Python memory profiler is recommended?,Is there any working memory profiler for Python3,Python memory leaks和Python: Memory leak debugging