5

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

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

从 Apache 切换到 nginx 服务器是否明智?是否有任何 Django 开发人员这样做并且对结果更满意?也欢迎任何其他提示。

谢谢

4

3 回答 3

4

我们在gunicorn服务器中使用 nginx 和 Django 应用程序。到目前为止,性能相当不错,但我没有与 Apache 设置进行任何直接比较。内存使用量很小,nginx 大约需要 10MB 内存,而 gunicorn 大约需要 150MB(但它也服务于多个应用程序)。当然,这可能因应用程序而异。

我建议简单地尝试一下,按照网络和/或 gunicorn 网站上的一些教程进行设置应该很容易。还可以获取一些可比较的测试用例,并使用诸如munin之类的监控软件来查看随时间的变化。

于 2012-10-28T15:21:35.987 回答
2

为什么不使用 mod_wsgi 的守护进程模式?如果您使用嵌入式模式,如果您不注意如何设置 Apache,那么您正在为内存问题设置自己。

去阅读:

http://blog.dscpl.com.au/2012/10/why-are-you-using-embedded-mode-of.html

还可以在以下位置观看我的 PyCon 演讲:

http://lanyrd.com/2012/pycon/spcdg/

还要修改您的问题并指出您正在使用哪个 Apache MPM 以及 MPM 设置是什么。

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

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

于 2012-10-28T23:34:25.570 回答
1

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

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

于 2012-10-28T15:27:53.707 回答