Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django内存使用率随着每个请求而增加_Python_Django_Memory Leaks_Mod Wsgi - Fatal编程技术网

Python Django内存使用率随着每个请求而增加

Python Django内存使用率随着每个请求而增加,python,django,memory-leaks,mod-wsgi,Python,Django,Memory Leaks,Mod Wsgi,我将我的第一个Django项目从DjangoEurope转移到Web派系,这引发了一个看起来像内存泄漏的问题。对于每个请求,服务器进程的内存使用量都会增加大约500kb。它永远不会下降。这种情况一直持续到webpartion因为占用太多内存而将其杀死 当我在浏览器中刷新Django的管理界面时,我可以清楚地看到这一点(尽管这发生在每个页面上,不仅仅是管理界面——我认为管理界面将是一个很好的测试用例,因为那里没有我的代码)。每次重新加载浏览器时,内存使用量都会增加数百KB 我使用Webfactio

我将我的第一个Django项目从DjangoEurope转移到Web派系,这引发了一个看起来像内存泄漏的问题。对于每个请求,服务器进程的内存使用量都会增加大约500kb。它永远不会下降。这种情况一直持续到webpartion因为占用太多内存而将其杀死

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

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

ps -u publica -o rss,etime,pid,command
有关我的设置的更多信息:

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

Edit:我创建了一个空的Django项目-默认的Django配置加上
Django.contrib.admin
和新的空数据库(使用mysql和postgresql进行了尝试)。我开始在浏览器中重新加载Django admin,并观察内存使用情况。起初,我看到问题发生了——每次重新加载后,内存使用量都会增加。但后来它稳定下来,停止了生长。这与我最初的项目在Django Europe上的表现是一致的。不幸的是,在Webfaction上,它似乎从未稳定下来(或者至少不在我的帐户可用内存的范围内)。有什么建议吗

我也有同样的问题

我使用的方法是运行cron作业,每隔5分钟左右检查一次内存,然后重新启动任何失去控制的应用程序。webpartion告诉我应该继续使用这种方法


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

我在Web派系上也遇到了内存问题——直到我添加了第五个应用程序,它们才真正出现。我尝试了一些对apache配置的调整,但最终对我有效的是切换到mod_wsgi。

  • 你查过这些提示了吗?->

  • 我们已经在WebFaction中部署了一个应用程序 我们没有这些问题

  • 您是否将静态文件作为 他们推荐什么

  • 顺便说一句,这也很有用:


    • 我建议不要猜测


      看一看,它是一个非常有用的应用程序,用于检测内存泄漏并找出代码中哪些部分是内存消耗的原因。

      apache中是否同时加载了mod_python和mod_wsgi模块


      我知道mod_wsgi不喜欢在其构建中使用mod_python。检查其未加载。

      检查进程内内存缓存后端是否已启用,如果启用,则可能是问题所在(每次请求时都会有新的缓存项)。

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

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

      • 请阅读Webfaction的文档:
      • 确保
        DEBUG
        设置设置为
        False
      • 不要使用
        mod_python
        ,使用
        mod_wsgi
      • 确保您使用的是最新版本od
        mod_wsgi
        (WebPosition倾向于安装旧版本)
      • 尝试在守护程序模式下运行
        mod_wsgi
        (WebPosition默认以嵌入式模式安装)[感谢Graham Dumpleton的提示]
      • 如果在嵌入模式下运行,可以指定“非活动超时=[seconds]”选项。它将在[秒]不活动后重新启动进程,有助于提高内存使用率
      • 将帮助您更轻松、更准确地监控内存使用情况[感谢ClaudioA的提示]

      我们在网络派系上也遇到了类似的问题,但事实证明根本不是因为他们。Django中存在一个缺陷,即在使用包含大量元素的站点地图时内存使用率较高:


      当我们删除站点地图时,它不再会在当时增加90MB。我想我应该提一下,因为它花了很长时间来进行故障排除。

      如果您的模型中存在漏洞,它肯定会出现在管理中,因此我不确定您是否已将代码排除在罪魁祸首之外。值得一提的是,我已经在Web派系上运行Django应用程序一年多了,还没有遇到过这样的问题。如果他们建议用户手动重新启动活动进程,他们的环境似乎有问题。我确实是从仔细分析这些提示开始的。我确实按照建议的方式提供静态文件(在过去两天中,我至少检查了五次;])。我不知道剧本的事。谢谢。如果您只运行一个应用程序,那么很容易避免问题。我认为他们实际上每隔一段时间就会重启你的应用程序。但是,当你在一个帐户中拥有四个应用程序时,你就很容易开始达到你的极限——特别是当WebParty对内存很吝啬,并且不允许你每个帐户购买超过240 MB的应用程序时。Mm。。不知道网络势力限制了你可以购买的内存。。。谢谢。但是您是在使用mod_wsgi的守护程序模式,还是在尝试以mod_wsgi的嵌入式模式运行所有东西?即使WebPosition配置将Apache服务器的子进程减少到2个,对于Django实例,如果使用嵌入式模式,仍然会比使用一个进程的守护进程模式占用更多内存。@Graham-谢谢。我将mod_wsgi升级到了3.1(由webpartion提供的2.5版本),这似乎有点帮助(这是我第一次看到内存使用的实例实际上下降了一点)。这个