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

2024-10-02 18:17:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我将我的第一个Django项目从DjangoEurope转移到Webfaction,这引发了一个看起来像内存泄漏的问题。每一次请求,服务器进程的内存使用量就会增加约500kb。它永远不会下降。这一直持续到网络势力因为使用太多内存而杀死它。

当我在浏览器中刷新Django的管理界面时,我可以清楚地看到这一点(尽管这发生在每个页面上,不仅仅是管理界面——我认为管理界面是一个不错的测试用例,因为那里没有我的代码)。每重新加载一个浏览器,内存使用量就会增加几百千字节。

我使用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 admin并观察内存使用情况。一开始我看到了问题的发生-每次重新加载后内存使用量都会增加。但后来它稳定下来并停止生长。这与我最初的项目在安哥拉欧洲的表现是一致的。不幸的是,在Webfaction上,它似乎永远不会稳定(或者至少不会在我的帐户可用内存的限制内)。有什么建议吗?


Tags: 项目django内存网络服务器界面admin进程
3条回答

我们在网络派系上也有类似的问题,但事实证明根本不是因为他们。Django中有一个bug,当使用包含大量元素的站点地图时,内存使用率很高:http://code.djangoproject.com/ticket/11572

当我们移除站点地图时,它在当时不会再增加90MB。只是觉得我应该提一下,因为它花了很长时间来使用故障排除。

恐怕我没有确切的答案。格雷厄姆·邓普尔顿的建议非常有用,但不幸的是他没有给出答案(只是评论),所以没有办法接受他的回应。

尽管我还没有完全解决这个问题,但对于其他有类似问题的人,这里有一些基本的建议:

我对网络势力也有同样的问题。

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

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

相关问题 更多 >