2

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

左:Apache,右:Bottle WSGI

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

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

此外,在开发 PHP 应用程序时,我从未在 100 毫秒内收到任何响应。但是看,瓶子里只有 13 毫秒。 瓶子服务非常快速的响应

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

4

2 回答 2

1

开发服务器不一定比生产级服务器快,所以这样的答案有点误导。

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

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

尤其要确保您没有使用 prefork MPM。优先使用 mod_wsgi 守护进程模式。

于 2013-08-10T07:49:47.740 回答
0

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

真的。而且它通常更快......在“典型”网络服务器环境中。要对此进行测试,请尝试启动 20 个并发客户端,并让它们向您的每个版本的服务器发出连续请求。您会看到,您一次只测试了 1 个请求——当然不是典型的 Web 环境。我怀疑您会看到每秒数十或数百个并发请求的不同结果(我们在这里考虑延迟和吞吐量)。

换句话说:在每秒 10、20、100 个请求时,您可能仍会看到 Apache 的约 200 毫秒延迟,但您会看到 Bottle 服务器的延迟要差得多。

顺便说一句,Bottle 文档确实提到了并发

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

还值得注意的是,Apache 比 Bottle 参考服务器做的更多(检查 .htaccess 文件、分派到子进程/线程、强大的日志记录等),所有这些功能必然会增加请求延迟。

最后,我想问一下您是否调整了 Apache 安装。您可以将其配置为比现在更快,例如通过调整 MPM、简化日志记录、禁用 .htaccess 检查。

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

于 2013-08-10T05:24:10.687 回答