当前位置:  开发笔记 > 编程语言 > 正文

在制作中,Apache + mod_wsgi还是Nginx + mod_wsgi?

如何解决《在制作中,Apache+mod_wsgi还是Nginx+mod_wsgi?》经验,为你挑选了4个好方法。

什么用于中型到大型的Python WSGI应用程序,Apache + mod_wsgi或Nginx + mod_wsgi?

哪种组合需要更多内存和CPU时间?
哪一个更快?
哪个比另一个更稳定?

我也在考虑使用CherryPy的WSGI服务器,但我听说它不适合非常高负载的应用程序,你对此有何了解?

注意:我没有使用任何Python Web Framework,我只是从头开始编写整个内容.
注意':也欢迎其他建议.



1> Graham Dumpl..:

对于nginx/mod_wsgi,请确保阅读:

http://blog.dscpl.com.au/2009/05/blocking-requests-and-nginx-version-of.html

由于nginx是一个事件驱动的系统,它具有行为特征,这对阻塞应用程序是有害的,例如基于WSGI的应用程序.更糟糕的情况是,使用多进程nginx配置,即使某些nginx工作进程可能处于空闲状态,您也可以看到用户请求被阻止.Apache/mod_wsgi没有此问题,因为Apache进程只有在拥有实际处理请求的资源时才接受请求.因此,Apache/mod_wsgi将提供更可预测和可靠的行为.


Apache基于事件的MPM与nginx非常不同.nginx是完全异步的.使用Apache中基于事件的MPM,async主要仅用于处理保持活动模式的套接字和其他一些我不记得的事情.即使使用事件MPM,请求仍然是由线程池中的单独线程处理的,因此仍然存在有限的资源.由于现在由异步维护的保持活动套接字,有可能过度提交资源,但有办法处理它,并且情况不会像异步一样糟糕.无论如何,现在不记得究竟是如何工作的.
它与nginx没有任何关系,它的工作原理.这是在nginx进程中嵌入阻塞WSGI应用程序的想法,这很糟糕.这没有改变.据我所知,nginx的mod_wsgi克隆很久以前就已经死了.

2> akaihola..:

nginx mod_wsgi的作者解释了此邮件列表消息中与Apache mod_wsgi的一些差异.



3> 小智..:

主要区别在于nginx是为了在更小的内存空间中处理大量连接而构建的.这使得它非常适合那些做彗星的应用程序,例如可以有许多空闲打开连接的连接.这也使它具有相当小的内存占用量.

从原始性能的角度来看,nginx速度更快,但速度并不快,我将其作为一个决定性因素.

Apache在可用模块领域具有优势,而且它非常标准.你使用的任何网络主机都会安装它,大多数技术人员都会非常熟悉它.

此外,如果你使用mod_wsgi,它是你的wsgi服务器,所以你甚至不需要cherrypy.

除此之外,我可以给出的最佳建议是尝试在两者下设置您的应用并进行一些基准测试,因为无论任何人告诉您,您的里程可能会有所不同.



4> Jason Baker..:

CherryPy的网络服务器有一件事就是它是一个纯粹的python webserver(AFAIK),可能会也可能不会让你更容易部署.另外,如果您只是将服务器用于WSGI和静态内容,我可以看到使用它的好处.

(无耻的插件警告:我写了我要提到的WSGI代码)

Kamaelia将在下一版本中提供WSGI支持.很酷的是,你可能能够使用预制的或使用现有的HTTP和WSGI代码构建自己的代码.

(结束无耻插头)

话虽如此,鉴于目前的选项,我个人可能会选择CherryPy,因为它似乎是最简单的配置,我可以理解python代码,而不是我能理解C代码.

您可以尽力尝试每一个,看看每个人的优缺点是针对您的具体应用.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有