Apache采用多进程模型响应用户请求,性能略有欠缺,对于物理内存依赖性很高,单机能够支撑的并发请求也只有几千,无法满足高并发性网站的需求。针对DOS攻击,可能瘫痪而致无法被访问。
IIS是只能运行在Windows平台之上的多线程web服务器,安全性Bug极多,极易被黑客攻击。
1、Lighttpd
lighttpd采用事件驱动和异步IO技术,运行时,一般只有单一的进程、单一的线程。实际上,lighttpd的服务进程很少会成为系统的瓶颈,系统的瓶颈通常是负责处理业务逻辑的CGI进程或者磁盘网络IO等。相对于Apache,稳定性不足。
2、Thttpdthttpd几乎可以任何支持POSIX标准的系统上运行,移植性特别好;在运行过程中,内存消耗小;由于小巧,没有采用fork的形式来处理新来的连接,从而不会产生过多的进程消耗系统资源,性能较高。
它是嵌入式系统的web server的最好选择。
3、NginxNginx采用master-slave模型,能够充分利用SMP的优势,且能够减少工作进程在磁盘I/O的阻塞延迟;其稳定性极高,由于采取了分阶段资源分配技术,使得CPU与内存占用率非常低;有出色的反向代理功能,常被用来充当反向代理服务器,或作为大规模邮件服务器的前端代理。
4、TUX支持SMP对称多处理器,多线程可以异步地完成复杂的HTTP请求;从内核的网络层直接驱动web服务,实现了一个真正意义上的网络事件驱动服务器;用内核网络层缓存请示,加快了静态请求的分发速度。TUX有时候被用来作为专门的图片服务器。
根据 Netcraft 最近的调查,虽然存在很多不同的 Web 服务器,但是其中两种 Web 服务器就占据了 90% 的份额,这两种 Web 服务器是 Apache和 Internet Information Server(IIS)。但是,是不是就没有其他的呢?如果你要了解一个web服务器是怎么运行的。至少它是怎么可以同时服务成千上万的用户的,这个问题,可能是很多网络服务器编程都要面对的问题。那么他们的源代码呢? 很显然IIS是不可能有源代码的,不然微软早就game over了。但是你会说Apache是开源的,是的,它是开源的,但是我觉得等你搞明白了apache的时候,也许是半年之后的事情了,并且你可能会觉得,哦,天啊,原来它是这么糟糕。 所以,如果你希望了解web服务器的工作原理,就需要那些剩下的10%-轻量级web服务器了,当然了,他们一般都是开源的,并且大部分是使用c和perl写的,还有的是java、php等,也有一些“不著名”的语言。 它们比 Apache 小得多。如此小的应用程序可以直接记住,系统地、严密地加以考虑,以证明它们的安全性或可伸缩性。小型 Web 服务器包括: Cheetah Server,用不到一千行的 C 代码编写而成。 DustMote,一个非常 小的 Web 服务器,用一个大约 3000 字节的 Tcl 源文件实现。 fnord,大小取决于平台和配置,不超过 20K。虽然很小,但是它支持虚拟主机、CGI和 keep-alive。 ihttpd,使用不到 800 行的 C 代码,包括 CGI,并通过 inetd提供页面。 im-httpd,非常小的服务器 —— 只有大约 7 KB,链接到 glibc。而且它也非常快。 mattows,支持 CGI,只有 600 行 C 代码。 Scrinchy,虽然很小,不到 30KB,但是支持多种脚本编制语言,包括一种特殊用途的、基于栈的 Sy 脚本语言。 ZWS 演示了一个即使是使用 500 多行带足够注释的 zsh (!) 编写的应用程序 —— 在这里是一个 HTTP 0.9+ 服务器 —— 也可以有多强大。 体积小并不妨碍这些服务器被正式使用。例如,fnord 可以处理数千个同时进行的连接。 也许轻量级作为一个类别最令人印象深刻的成就是高性能服务器: cghttpd 是一个小型 Web 服务器,它被理解为使用 2.6 系列内核中可用的异步功能的一个试验品。 darkhttpd 是一个快速的、单线程的 HTTP/1.1 服务器。 Gatling 是为高性能设计的。它的特性包括 FTP、IPv6、虚拟主机、CGI 等。 Kernux 是一个 Linux内核模块,它实现了一个 HTTP 守护进程。 lighttpd 是使用率排名第五的 Web 服务器(排名还在上升)。它为很多同时进行的连接进行了优化:“典型的场景是使用 lighttpd 作为一个下载(off-load)服务器,以提供静态内容……” LiteSpeed Web Server 是一款轻量级商业 Web 服务器,强调性能和安全性。LiteSpeed Technologies 公司宣传为静态内容提速了 6 倍,在解释页面方面也有一定的提高。Miniature JWS,也称 tjws,它是基于 Java 的 Web 服务器,可以处理servlet、JSP和数千个并发连接,而大小只有 77 KB。它的作者声称它 “比 Apache 2.x 快 10%”。 Yaws 是用 Erlang 编写的一款高性能 HTTP/1.1 服务器。 有些 Web 服务器被实现为类或库,以便嵌入到较大的应用程序中。 在这些 Web 服务器当中,我发现特别有趣的有: EHS —— “嵌入式HTTP 服务器”,被设计为一个 C++类,用于嵌入到较大的 C++ 应用程序;还有 Embedded TCL Web Server,它是一个很普通的 Web 服务器,支持 SSL和 Basic Authentication,速度非常快 —— 其作者使它至少与 lighthttpd 和 AOLserver 一样快。它是用不到 100 行 Tcl 编写的。 Python 是几种适合不寻常环境的 Web 服务器的实现语言,这些 Web 服务器包括: cdServer 是一个小型的、用 Python 编写的 HTTP 服务器,它“被设计用来提供来自 CD-ROM 的(静态)内容” 。它在提供动态内容方面能力有限。我们有几个涉及不受影响的“live CDs” 的项目,在这些项目中像 cdServer 之类的工具很关键。 edna,一款智能的用 Python 编写的 MP3 服务器,它是用 HTTP 实现的。
还有其他一些用 Perl 和其他不出名的语言编写的轻量级 Web 服务器: Camlserv,用 ocaml 编写的一个完整的 Web 服务器,目标是 “高度交互式的 Web 页面”。它由几千行 ocaml 编写而成,其中大部分代码都与 MySQL和 HTML 的特殊处理有关。 dhttpd 用和 Apache 相同的格式记录访问。它支持 CGI,并具有内建的 Perl 解释器、虚拟主机、IPv6、带宽管理和安全性等方面的特性。 DNHTTPD 是用 Perl 编写的,用于 UNIX。它支持虚拟主机、SSL 连接、CGI 等。 Jellybean 是用 Perl 编写的基于 HTTP 的 Perl Object Server。 lns.http 是一个 Common LISP HTTP/1.1 Web 框架。 Mongrel 是用 Ruby编写的、用于 HTTP 的一个库和服务器。 Nanoweb 是用 PHP编写的一款快速、健壮的 Web 服务器。它宣称具有丰富的特性,包括完全遵从 HTTP/1.1、访问控制、身份验证、虚拟主机、SSL 兼容性等。 Naridesh 是用 Perl 编写的 Web 服务器。 OpenAngel 是用 Perl 编写的。它强调的重点是安全性。 Xavante 是用 Lua 编写的 HTTP/1.1 Web 服务器。 XSP 是用 C# 编写的,用于运行 ASP.NET。
有时候您可能需要其他一些用 C 编写的、具有不常见的次要优势的轻量级 Web 服务器: ABYSS 可以在 UNIX 和 Win32 之间移植,其 “目的是成为完全遵从 HTTP/1.1 的 Web 服务器”。它占用的内存很少。 Anti-Web HTTPD(也称 “Anti-Web”、“awhttpd” 和 “AW”)是一款单进程、无线程、支持 CGI 的服务器,它强调安全性和简单性。 MHTTPD 支持从外部文件或 LDAP 服务器进行的 MHTTPD Basic Authentication。 mini-httpd 可以在一个系统线程中处理多个并发请求,但是在主机上占用的内存或 CPU很少。 Naken Web 类似于很多其他的轻量级服务器 —— 它支持 Basic Authentication、静态内容等 —— 但是它的作者将它设计为用于 Webcam 操作,并且在 Gumstix、WRT54GL、OpenWrt 和其他新的平台上运行。
Null httpd 是一款多线程的、简单的、可移植的 Web 服务器。 Seminole 是一款商业 Web 服务器,内存需求较小,功能较多。 thttpd throttle,支持 chroot、Basic Authentication 等。 Web 服务器远远不止是 Apache和 IIS 的天下。您可以发现很多其他的 Web 服务器,它们很小,易于理解,但是又足够快,可以被正式使用。这样的 Web 服务器可以很好地加快您的下一个项目。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)