我的内存使用量随着时间的推移而增加,并且重启Django对用户而言并不友好。
我不确定如何分析内存使用情况,但是一些有关如何开始测量的提示将很有用。
我感觉有些简单的步骤可以带来很大的收益。确保将“调试”设置为“假”是显而易见的。
有人可以建议别人吗?在低流量的网站上缓存会带来多少改善?
在这种情况下,我将使用mod_python在Apache 2.x下运行。我听说mod_wsgi较精简一些,但除非我知道收益会很大,否则在此阶段进行切换将很棘手。
编辑:感谢到目前为止的提示。关于如何发现内存用尽的任何建议?是否有任何有关Python内存分析的指南?
同样如前所述,有一些事情会使切换到mod_wsgi变得很棘手,因此我想对在朝这个方向努力之前所能获得的收益有所了解。
编辑: 卡尔在这里发布了更详细的回复,值得一读:Django部署:减少Apache的开销
编辑: Graham Dumpleton的文章是我在MPM和mod_wsgi相关的东西上找到的最好的文章。我很失望,但是没人能提供有关调试应用程序本身的内存使用情况的任何信息。
最终编辑: 好吧,我一直在与Webfaction讨论这个问题,看他们是否可以协助重新编译Apache,这就是他们的话:
“我真的认为切换到MPM Worker + mod_wsgi设置不会给您带来太大的好处。我估计您可能可以节省20MB左右,但可能不超过20MB。”
所以!这使我回到了最初的问题(我仍然不明智)。如何确定问题所在?这是一个众所周知的准则,如果不进行测试以查看需要优化的地方就不会进行优化,但是关于测量Python内存使用情况的教程的方式很少,而针对Django的教程则完全没有。
感谢大家的帮助,但我认为这个问题仍然悬而未决!
另一个最终编辑;-)
我在django-users列表上问了这个,并得到了一些 非常 有帮助的回复
老实说,有史以来最后一次更新!
这是刚刚发布。可能是迄今为止最好的解决方案:使用Pympler分析Django对象的大小和内存使用情况
确保您没有保留对数据的全局引用。这样可以防止python垃圾收集器释放内存。
不要使用mod_python。它在apache中加载一个解释器。如果需要使用apache,请mod_wsgi改用。切换并不困难。这很容易。与django -dead相比,为djangomod_wsgi进行配置更容易mod_python。
mod_python
mod_wsgi
如果您可以从需求中删除apache,那对您的记忆会更好。spawning似乎是运行python Web应用程序的新的快速可扩展方式。
spawning
编辑 :我看不到如何切换到mod_wsgi可能是“ 棘手的 ”。这应该是一个非常容易的任务。请详细说明您在使用交换机时遇到的问题。