Django内存使用率随着每个请求而上升

时间:2010-02-19 00:36:40

标签: python django memory-leaks mod-wsgi

我将我的第一个Django项目从DjangoEurope移动到Webfaction,这开始出现一个看起来像内存泄漏的问题。随着每个请求服务器进程的内存使用量增加约500kb。它永远不会失败。这种情况一直持续到Webfaction因使用太多内存而导致死亡。

当我在浏览器中刷新Django的管理界面时,我可以清楚地看到这一点(虽然每个页面都会发生这种情况,不仅仅是管理界面 - 我虽然管理界面会是一个不错的测试用例,因为没有我的代码直接在那里)。每次浏览器重新加载时,内存使用量都会增加几百KB。

我使用Webfaction建议的命令测试内存:

ps -u publica -o rss,etime,pid,command

有关我的设置的更多信息:

  • Django 1.1(稳定)
  • 使用Apache和mod_wsgi
  • 的默认Webfaction Django设置
  • DEBUG设置为False
  • 来自Webfaction的MySQLdb 1.2.2,但在听到它有一些问题之后我尝试了1.2.3c版本。没有帮助。

编辑:我创建了一个空的Django项目 - 默认的Django配置加django.contrib.admin和新的空数据库(使用mysql和postgresql都尝试过)。我开始在浏览器中重新加载Django管理员并观察内存使用情况。起初我看到了问题 - 每次重新加载后内存使用量都会增加。但随后它稳定下来并停止增长。这与我的原始项目在Django Europe上的表现一致。不幸的是,在Webfaction上它似乎永远不会稳定(或者至少不在我帐户可用的内存限制内)。有什么建议?

8 个答案:

答案 0 :(得分:13)

我恐怕没有明确的答案。 Graham Dumpleton的提示最有帮助,但不幸的是他没有回答(只是评论),所以没有办法接受他的回应。

虽然我还没有完全解决问题,但以下是其他有类似问题的人的基本提示:

答案 1 :(得分:2)

我们在Webfaction上遇到了类似的问题,但事实证明并不是因为它们。在使用包含大量元素的站点地图时,Django中存在关于高内存使用率的错误:http://code.djangoproject.com/ticket/11572

当我们删除站点地图时,它不再能够达到90 Mb。我想应该提一下,因为用了很长时间进行故障排除。

答案 2 :(得分:1)

我对webfaction也有同样的问题。

我使用的方法,以及哪个webfaction告诉我应该继续使用,运行一个cron作业,每5分钟左右检查一次内存,并重新启动任何失控的应用程序。

在webfaction上的4个python应用程序中,我平均每天重启4次。

答案 3 :(得分:1)

我建议你不要猜。

看看http://code.google.com/p/django-dowser/,它是一个非常有用的应用程序,用于检测内存泄漏并确定代码的哪些部分负责内存消耗。

答案 4 :(得分:1)

检查是否启用了进程内内存缓存后端,如果是,则可能是问题(每个请求都有新的缓存条目)。

答案 5 :(得分:0)

我在Webfaction上也有内存问题 - 直到我添加了我的第五个应用程序之后它们才真正出现。我对我的apache配置进行了一些调整,但最终对我有用的只是切换到mod_wsgi。

答案 6 :(得分:0)

答案 7 :(得分:0)

mod_python和mod_wsgi模块都加载到apache中吗?

我知道mod_wsgi不喜欢在它的建筑物中使用mod_python。检查它未加载。