Django性能/内存使用

Django性能/内存使用,django,performance,apache,memory,nginx,Django,Performance,Apache,Memory,Nginx,我正在一个EC2小实例(1.7GB RAM)上运行我的应用程序的alpha版本,该实例上有postgres和apache(wsgi mod不是作为守护进程,而是直接作为守护进程) 性能还可以,但可以更好。如果有太多的测试用户加入,我还担心内存使用 从Apache切换到nginx服务器明智吗?有没有Django开发人员做到了这一点,并且对结果感到满意?我们也欢迎您在途中提供任何其他建议 谢谢我们正在服务器上与Django应用程序一起使用nginx。到目前为止,性能相当好,但我没有与Apache设置

我正在一个EC2小实例(1.7GB RAM)上运行我的应用程序的alpha版本,该实例上有postgres和apache(wsgi mod不是作为守护进程,而是直接作为守护进程)

性能还可以,但可以更好。如果有太多的测试用户加入,我还担心内存使用

从Apache切换到nginx服务器明智吗?有没有Django开发人员做到了这一点,并且对结果感到满意?我们也欢迎您在途中提供任何其他建议


谢谢

我们正在服务器上与Django应用程序一起使用nginx。到目前为止,性能相当好,但我没有与Apache设置进行任何直接比较。内存使用量非常小,nginx占用约10MB内存,gunicorn占用约150MB内存(但它也为多个应用程序提供服务器)。当然,这可能因应用程序而异


我建议尝试一下,在网络和/或gunicorn网站上的一些教程之后,应该很容易设置它。还可以获得一些可比较的测试用例,并使用某种监控软件,如查看随时间的变化。

我的结果好坏参半。当应用程序速度快、无阻塞时,nginx表现良好,内存占用较小。流量越大,效益越大


我有几个GIS应用程序速度稍慢,在这种情况下,nginx失败得很惨。我的建议是:不要在任何可能阻塞几秒钟的东西上使用nginx+wsgi。

为什么不使用mod_wsgi的守护程序模式?如果您使用的是嵌入式模式,那么如果您不小心设置Apache,您就是在为自己设置内存问题

去读一读:

还可以在以下网站观看我的PyCon演讲:

另外,请修改您的问题,并指出您正在使用的Apache MPM以及MPM设置

至于使用gunicorn或uWSGI等替代方案,对于类似的配置,内存需求没有太大的不同,因为底层服务器不会决定使用多少内存,而是运行在其上的特定Python web应用程序。一种常见的误解是,gunicorn或uWSGI以某种方式神奇地解决了所有问题,而Apache却无法做到这一点。为pythonweb应用程序正确设置Apache,不要依赖其默认值,它与其他解决方案一样强大,可以根据您的需求提供更多的灵活性


非常建议您进行一些监控,以找出真正的问题和瓶颈。

这不应该是服务器故障吗?前一段时间切换-这是我所做的最好的一步。性能和RAM使用率是一个梦想。应用程序通过Gunicorn提供感谢您的回答。这些数字非常有趣。我想知道我是否可以便宜一点,甚至买一个更便宜的MicroEC2实例(613MB)。我只有一个应用程序,几乎没有钱——作为一家初创公司。:)我可以试一试,看看是否内存溢出。我今天做了一些研究,你对uWSGI有什么看法,它是gunicorn的替代品,对吗?也感谢穆宁。可能非常方便。请记住,微实例没有固定数量的CPU分配。但是开发一套现实的测试和检查,也许就足够了!虽然没有关于uWSGI的个人经验,但很抱歉。+1谢谢你的建议。对。微实例在小型突发中工作得最好,在该突发中,它们实际上分配了2个CPU。也许我还是应该呆在小地方。至少连续分配一个cpu。最后一个问题,您是否将DB(postgres或mysql)保留在同一个实例上?谢谢你离开。对于较小的实例,它们的性价比非常有趣(免责声明:该链接有我的推荐代码,但我实际上是一个非常满意的客户)。Kave,我使用的是RDS,而不是自托管mysql。+1感谢Graham。你的博客很好,你的演讲内容丰富。我仍处于技术尝试阶段,可能会坚持使用Apache守护程序。但是您还提到,为了实现nginx的轻量级,Apache需要禁用一些buildin mod。这很难实现吗?取决于您使用的Linux发行版以及是否使用其Apache发行版。例如,其他平台可能有点不同。如果在Apache安装上运行,可能意味着注释掉相应的LoadModule行。啊,抱歉,忘了提到我正在使用Ubuntu 12.04和它附带的Apache。现在我看到了如何禁用它们。是否有我可以安全禁用的所有可用模块的列表等?您必须知道您正在使用哪些模块。因此,这不是一种可以安全禁用的情况,而是您不依赖于Apache配置的设置方式。