WSGI服务器与Apache

WSGI服务器与Apache,apache,wsgi,bottle,Apache,Wsgi,Bottle,我其实没什么问题,只是有点好奇而已。 我基于瓶子()制作了一个python web框架。今天,我尝试做一些比较,以比较WSGI服务器和apache服务器的性能。我使用apache 2、python 2.7和瓶子开发版本(0.12)在lubuntu 12.04上工作,得到了这个令人惊讶的结果: 如瓶子文档中所述,附带的WSGI服务器仅用于开发目的。问题是,为什么开发服务器比部署服务器(apache)快 据我所知,开发服务器通常较慢,因为它提供了一些“调试”功能 而且,在开发PHP应用程序时,我从

我其实没什么问题,只是有点好奇而已。 我基于瓶子()制作了一个python web框架。今天,我尝试做一些比较,以比较WSGI服务器和apache服务器的性能。我使用apache 2、python 2.7和瓶子开发版本(0.12)在lubuntu 12.04上工作,得到了这个令人惊讶的结果:

如瓶子文档中所述,附带的WSGI服务器仅用于开发目的。问题是,为什么开发服务器比部署服务器(apache)快

据我所知,开发服务器通常较慢,因为它提供了一些“调试”功能

而且,在开发PHP应用程序时,我从来没有在不到100毫秒的时间内得到任何响应。但看,瓶子里只有13毫秒。

有人能解释一下吗?这对我来说毫无意义。部署服务器应该比开发服务器快

部署服务器应该比开发服务器快

对。而且它通常更快。。。在“典型”web服务器环境中。要测试这一点,请尝试启动20个并发客户端,让它们对服务器的每个版本发出连续请求。您知道,您一次只测试了一个请求——当然不是典型的web环境。我猜想您将看到不同的结果(我们在这里同时考虑这两种情况),每秒有数十或数百个并发请求

换句话说:在每秒10、20、100个请求的情况下,您可能仍然会看到Apache的延迟约为200毫秒,但您会看到瓶子服务器的延迟要差得多

顺便说一句,瓶子说明:

内置的默认服务器基于wsgiref WSGIServer。这 非线程HTTP服务器非常适合开发和早期应用 但在服务器加载时可能会成为性能瓶颈 增加

还值得注意的是,Apache所做的工作远不止瓶子引用服务器(检查.htaccess文件、分派到子进程/线程、健壮的日志记录等),所有这些功能都必然会增加请求延迟

最后,我想问您是否对Apache安装进行了调优。例如,您可以通过调整MPM、简化日志记录、禁用.htaccess检查


希望这有帮助。如果您确实运行了并行基准测试,请与我们分享结果。

开发服务器不一定比生产级服务器快,因此这样的回答有点误导

在这种情况下,真正的原因很可能是由于在第一个命中进程的请求上延迟加载web应用程序。特别是如果您没有正确配置Apache,如果您的站点没有获得太多流量,您可能会遇到这种延迟加载

我建议你去看我的PyCon演讲,其中涉及到一些问题


尤其要确保您没有使用prefork MPM。首选使用mod_wsgi守护程序模式。

太好了。现在有道理了。WSGIServer是非线程的,没有附加任何额外的进程。非常好的演示文稿。有很多事情我以前都不知道。但是我得到了一些要点,包括:不要使用相同的apache来为PHP和Python服务,因为Python与PHP不同,因此需要正确配置apache来为Python服务。此外,我认为我安装了mpm prefork,甚至不知道它的用途。谢谢