高级 Web 服务器能比基本 Web 服务器更快吗?

高级 Web 服务器能比基本 Web 服务器更快吗?

基本的 Web 服务器(例如 PythonSimpleHTTPServer或)THTTPD以最少的进程读取静态文件;因此速度相当快。通常,添加更多功能来创建高级 Web 服务器(但仍然是轻量级的,例如nginx)会减慢此过程。

高级 Web 服务器能否耍点花招来加快进程?或者说,比最简单更简单是不可能的,而最简单是读取静态文件最快的方法?我的意思是nginx(或其他声称速度很快的轻量级 Web 服务器)能否比(或其他具有最少进程的基本 Web 服务器)更快THTTPD

那么 CGI 脚本呢?因为HTTPDpythonCGIHTTPServer可以简单地执行 cgi 脚本。

答案1

功能较少的 Web 服务器占用的内存和 CPU 较少,这使得它们在执行特定任务时速度更快。其中一些服务器还专门针对某项任务而设计。

这就是 PHP-FPM 等软件出现的原因。您无需使用臃肿的 apache2 进程(为每个进程加载一个 PHP 模块),而是使用前端处理静态文件(如 nginx),使用后端(如通过 FastCGI 的 PHP-FPM)处理动态应用程序。

但是,这取决于您的使用情况和环境。如果您进行 99% 的动态处理,那么可能不值得这么麻烦。一个很好的例子就是 Java 应用程序。当您只使用 tomcat 而不使用其他任何东西时,完成设置前端和后端的所有工作没有多大意义。

答案2

“简单”和“快速”并不总是相关的,特别是在计算方面——在这种情况下,SimpleHTTPServer 使用简单的文件读取方法、简单的网络方法、干净明显的处理方式,新程序员也可以轻松阅读等等;nginx 拥有大量复杂的代码,以最有效的方式使用先进的高速文件和网络 API,使用内存分配的奇怪技巧来避免复制数据等等。

另外,语言开销 - 当瓶颈是数据库或文件系统时,python 速度非常快,但实际上我发现,对于每秒提供数千个缩略图,nginx 及其用 C 编写的所有复杂内容比仅从内存返回数据的简单 python 程序快 10 倍。

至于 THTTPD 与 nginx,它们都是 C,并且都是为速度而非简单性而设计的,所以我猜它们的性能会更接近 - 但 thttpd 似乎是在 2003 年最后一次更新,这意味着它早于 nginx 使用的大多数高速 API。

答案3

一般来说,越简单意味着越快。但是,除非您亲自尝试,否则您无法确定服务器 x 是否比服务器 y 更快。您也可以查看已经完成的基准测试(如果有)以了解情况。

由于增加了复杂性,高级 Web 服务器可能比简单/基本服务器慢。但是,高级服务器在其他情况下可能会更好。高级服务器通常允许您打开/关闭某些功能并对其进行优化以获得更好的性能。因此,没有通用的答案!

相关内容