概述
今天主要对比下这几个主流的WEB服务器:lighttpd、apache、nginx
1、LIGHTTPD1.1简述
Lighttpd 是一个德国人领导的开源Web服务器软件,具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。支持FastCGI, CGI, Auth,输出压缩(output compress), URL重写, Alias等重要功能。
它使用FastCGI方式运行PHP时,将使用很少的PHP进程响应很大的并发量。
1.2 优点
1)从稳定性上看,FastCGI是以独立的进程池运行来CGI,单独一个进程死掉,系统可以很轻易的丢弃,然后重新分配新的进程来运行逻辑;
2)从安全性上看, FastCGI和宿主的server完全独立, fastcgi怎么down也不会把server搞垮;
3)从性能上看, FastCGI把动态逻辑的处理从server中分离出来,大负荷的IO处理还是留给宿主server,这样宿主server可以一心一意作IO,对于一个普通的动态网页来说,逻辑处理可能只有一小部分, 大量的图片等静态IO处理完全不需要逻辑程序的参与(注1)
4)从扩展性上讲,FastCGI是一个中立的技术标准,完全可以支持任何语言写的处理程序(php,java,python…)
1.3 支持操作系统
Linux(binary packages for FC3,SuSE,Debian,Gentoo,PLD-Linux,OpenWRT)BSD(FreeBSD,NetBSD,OpenBSD,MacOSX)SGIIRIXWindows(Cygwin)While it is known to compile cleanly onSolarisAIX2、APACHE2.1 简述
Apache是世界排名第一的web服务器,根据所作的调查,世界上百分之五十以上的web服务器在使用apache。
Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。世界上很多著名的网站如Amazon、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物。
2.2 优点
几乎可以运行在所有的计算机平台上.支持最新的http/1.1协议简单而且强有力的基于文件的配置(httpd.conf).支持通用网关接口(cgi)支持虚拟主机.支持http认证.集成perl.集成的代理服务器可以通过web浏览器监视服务器的状态,可以自定义日志.支持服务器端包含命令(ssi).支持安全socket层(ssl).具有用户会话过程的跟踪能力.支持fastcgi支持java servlets2.3 支持操作系统
LinuxWindows其他3、NGINX3.1简述
Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器。Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发。Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx以事件驱动(epoll)的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡,有研究表明能支持高达 50,000个并发连接数。。其拥有匹配 Lighttpd的性能,同时还没有Lighttpd的内存泄漏问题,而且Lighttpd的mod_proxy也有一些问题并且很久没有更新。但是Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞。所以必须使用FastCGI方式来执行PHP程序。
3.2优点
处理静态文件,索引文件以及自动索引;打开文件描述符缓冲;无缓存的反向代理加速,简单的负载均衡和容错;FastCGI,简单的负载均衡和容错;模块化的结构。包括gzipping, byte ranges, chunked responses,以及 SSI-filter等filter。如果由FastCGI或其它代理服务器处理单页中存在的多个SSI,则这项处理可以并行运行,而不需要相互等待。Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率Nginx具有很高的稳定性。其它HTTP服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器。例如当前apache一旦上到200个以上进程,web响应速度就明显非常缓慢了。而Nginx采取了分阶段资源分配技术,使得它的CPU与内存占用率非常低。nginx官方表示保持10,000个没有活动的连接,它只占2.5M内存,所以类似DOS这样的攻击对nginx来说基本上是毫无用处的。就稳定性而言,nginx比lighthttpd更胜一筹。Nginx支持热部署。它的启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行进行升级。3.3操作系统
LinuxWindows(移植版本)其他3.4 推荐架构
nginx作为最前端的web cache系统,通常的架构如下
这个结构的优点:
可以使用nginx前端进行诸多复杂的配置,这些配置从前在squid是没法做或者做起来比较麻烦的,比如针对目录的防盗链。nginx前端可以直接转发部分不需要缓存的请求。因为nginx效率高于squid,所以某些情况下可以利用nginx的缓存来减轻squid压力。可以实现url hash等分配策略可以在最前端开启gzip压缩,这样后面的squid缓存的纯粹是无压缩文档,可以避免很多无谓的穿透。因为nginx稳定性比较高,所以lvs不需要经常调整,通过nginx调整就可以。squid的文件打开数按默认的1024就绰绰有余,不过处理的请求可一个都不会少。可以启用nginx的日志功能取代squid,这样做实时点击量统计时可以精确定位到url,不必要再用低效率的grep来过滤。因为nginx的负载能力高于squid,所以在用lvs分流时可以不必分得特别均衡,出现单点故障的几率比较低。nginx和squid配合搭建的web服务器前端系统架构:
前端的lvs和squid,按照安装方法,把epoll打开,配置文件照搬,基本上问题不多。
这个架构和app_squid架构的区别,也是关键点就是:加入了一级中层代理,中层代理的好处实在太多了:
gzip压缩:压缩可以通过nginx做,这样,后台应用服务器不管是apache、resin、lighttpd甚至iis或其他古怪服务器,都不用考虑压缩的功能问题。负载均衡和故障屏蔽:nginx可以作为负载均衡代理使用,并有故障屏蔽功能,这样,根据目录甚至一个正则表达式来制定负载均衡策略变成了小case。方便的运维管理,在各种情况下可以灵活制订方案。权限清晰:这台机器就是不写程序的维护人员负责,程序员一般不需要管理这台机器,这样假如出现故障,很容易能找到正确的人。对于应用服务器和数据库服务器,最好是从维护人员的视线中消失,我的目标是,这些服务只要能跑得起来就可以了,其它的事情全部可以在外部处理掉。3种WEB服务器的比较以下是针对这三个web服务器的一些比较:
从上面的分析比较建议的一种方案是:
Apache后台服务器(主要处理php及一些功能请求 如:中文url)Nginx 前端服务器(利用它占用系统资源少得优势来处理静态页面大量请求)Lighttpd图片服务器后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~
当前,WebService是一个热门话题。但是,WebService究竟是什么?什么情况下应该用WebService?什么情况下不应该用WebService?是需要我们正确认识的。
Web Service 是一种新的web应用程序分支,他们是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。Web Service可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他Web Service应用程序可以发现并调用它部署的服务。
实际上,WebService的主要目标是跨平台的可互操作性。为了达到这一目标,WebService完全基于XML(可扩展标记语言)、XSD(XMLSchema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。由此可以看出,在以下三种情况下,使用WebService会带来极大的好处。
长项一:跨防火墙的通信
如果应用程序有成千上万的用户,而且分布在世界各地,那么客户端和服务器之间的通信将是一个棘手的问题。因为客户端和服务器之间通常会有防火墙或者代理服务器。在这种情况下,使用DCOM就不是那么简单,通常也不便于把客户端程序发布到数量如此庞大的每一个用户手中。传统的做法是,选择用浏览器作为客户端,写下一大堆ASP页面,把应用程序的中间层暴露给最终用户。这样做的结果是开发难度大,程序很难维护。
长项二:应用程序集成
企业级的应用程序开发者都知道,企业里经常都要把用不同语言写成的、在不同平台上运行的各种程序集成起来,而这种集成将花费很大的开发力量。应用程序经常需要从运行在IBM主机上的程序中获取数据;或者把数据发送到主机或UNIX应用程序中去。即使在同一个平台上,不同软件厂商生产的各种软件也常常需要集成起来。通过WebService,应用程序可以用标准的方法把功能和数据“暴露”出来,供其它应用程序使用。
例如,有一个订单登录程序,用于登录从客户来的新订单,包括客户信息、发货地址、数量、价格和付款方式等内容;还有一个订单执行程序,用于实际货物发送的管理。这两个程序来自不同软件厂商。一份新订单进来之后,订单登录程序需要通知订单执行程序发送货物。通过在订单执行程序上面增加一层WebService,订单执行程序可以把“AddOrder”函数“暴露”出来。这样,每当有新订单到来时,订单登录程序就可以调用这个函数来发送货物了。
长项三:B2B的集成
用WebService集成应用程序,可以使公司内部的商务处理更加自动化。但当交易跨越供应商和客户、突破公司的界限时会怎么样呢?跨公司的商务交易集成通常叫做B2B集成。
WebService是B2B集成成功的关键。通过WebService,公司可以把关键的商务应用“暴露”给指定的供应商和客户。例如,把电子下单系统和电子发票系统“暴露”出来,客户就可以以电子的方式发送订单,供应商则可以以电子的方式发送原料采购发票。当然,这并不是一个新的概念,EDI(电子文档交换)早就是这样了。但是,WebService的实现要比EDI简单得多,而且WebService运行在Internet上,在世界任何地方都可轻易实现,其运行成本就相对较低。不过,WebService并不像EDI那样,是文档交换或B2B集成的完整解决方案。WebService只是B2B集成的一个关键部分,还需要许多其它的部分才能实现集成。
用WebService来实现B2B集成的最大好处在于可以轻易实现互操作性。只要把商务逻辑“暴露”出来,成为WebService,就可以让任何指定的合作伙伴调用这些商务逻辑,而不管他们的系统在什么平台上运行,使用什么开发语言。这样就大大减少了花在B2B集成上的时间和成本,让许多原本无法承受EDI的中小企业也能实现B2B集成。
短处一:单机应用程序
目前,企业和个人还使用着很多桌面应用程序。其中一些只需要与本机上的其它程序通信。在这种情况下,最好就不要用WebService,只要用本地的API就可以了。
短处二:局域网的同构应用程序
在许多应用中,所有的程序都是用VB或VC开发的,都在Windows平台下使用COM,都运行在同一个局域网上。例如,有两个服务器应用程序需要相互通信,或者有一个Win32或WinForm的客户程序要连接局域网上另一个服务器的程序。在这些程序里,使用DCOM会比SOAP/HTTP有效得多。
总之,只要从应用程序结构的角度看,有别的方法比WebService更有效、更可行,那就不要用WebService
Apache
Apache
仍然是世界上用的最多的
Web
服务器,市实菜非另字感酒世理场占有率达
60%
左右。它源于
NCSAhttpd
服务器,当
NCSA
WWW
服务器项目来自停止后,那些使用
NCSA
WWW
服务器的人案丰田划说绍争们开始交换用于此服务器的补丁,这也是
apache
名称
的由来
武判环并灯多宪快点(pache
补丁
)
。世界上很多著名的网站都是
Apache
的产物,它的成功之处主要在于它的源代码开放、有一支
开放的开发队伍、支持跨平台的应用
(
可以运行在几乎草所有的
Unix
、
Windows
、
Linux
系统平台上
)
以及它的可移植性
等方面。
官方网站:
http://ww解著病被渐记听临右系w.***.org
下载地址:
http://www.***.com/Server/Soft/200808/01245.html
T
omcat
Tomcat
是一个开放源代码、运行
servle以销盟商t
和
JSP
Web
应用软件的基于
Java
的
Web
应用软件容器。
Tomc严著套加与清at
Server
是根据
servlet
和
JSP
规范进行执行的,因此我们就可以说
Tomcat
Server
也实行了
Apache-Jakarta
规范且比绝大多数
商业应用软件服务器要好。
To绝急手行深灯立记点需mcat
是
Java
Servlet
2.2
和
JavaSer继充丰费因ver
Pages
1.1
技术的标准实现,是基于
Ap联ache
许可证下开发由钟的自由软件。
Tomcat
是完全重写的
Servlet API 2.2
和
JSP 1.1
兼容的
Servlet/JSP
容器。
Tomcat
使用了
JServ
的一些代码,
特别是
叶量口保劳约量算操Apache
服务适配器。随着
Catalina
Servlet
引擎的出现,
Tomcat
第四版号的性能得到提升,使得它成为一个值得考虑的
Servlet/JSP
容器,因此目前许多
WEB
服务器都是采用
动营Tomcat
。
官方网站:
http://tomcat.***.org
下载地址:
http://www.***.com/Server/Soft/200808/点02250.html
小型
WEB
服务器
【
micro_httpd - really small HTTP server
】
特点:
*
支持安全的
..
上级目录过滤
*
支持通用的
MIM朝E
类型
*
支持简单的目录
*
支持目录列表
*
支持使用
index复妈争青术土去河双.html
作为首页
* Trailing-slash redirection
应费天收范环连易致识*
程序总共代码才
200
多行
这个
httpd
适合学习简单的
Web Server
编写学习,
因为它只有一个简单的框架,
只能够处理简单的静态页,可以
考虑用来放静态页。
官方地址:
http://www.***.com/software/micro_httpd/
下载地址:
http://www.***.com/software/micro_httpd/micro_httpd_12dec2005.***.gz
【
mini_httpd - small HTTP server
】
特点:
*
支持
GET
、
HEAD
、
浓POST
方法
*
支持
CGI
功能
*
支持基本的验证功能
*
支持安全
..
上级目录功能
*
支持通用的
MIME
类型
*
支持目录列表功能
*
支持使用
index.html, index.htm, ***.cgi
作为首页
*
支持多个根目录的虚拟主机
*
支持标准日志记录
*
支持自定义错误页
* Trailing-slash redirection
mini_httpd
也是相对比较适合学习使用,大体实现了一个
Web
Server
的功能,支持静态页和
CGI
,能够用来放
置一些个人简单的东西,不适宜投入生产使用。
官方地址:
http://www.***.com/software/thttpd/
下载地址:
http://www.***.com/software/mini_httpd/mini_httpd-1.***.gz
【
thttpd - tiny/turbo/throttling HTTP server
】
thttpd
中是一个简单
,
小型
,
轻便
,
快速和安全的
http
服务器
.
简单:它能够支持
HTTP/1.1
协议标准,或者超过了最低水平
小巧:它具有非常少的运行时间,因为它不
fork
子进程来接受新请求,并且非常谨慎的分配内存(性能对比表:
http://www.***.com/software/thttpd/benchmarks.html
)
便携:它能够在大部分的类
Unix
系统上运行,包括
FreeBSD, SunOS 4, Solaris 2, BSD/OS, Linux, OSF
等等
快速:它的速度要超过主流的
Web
服务器(
Apache, NCSA, Netscape
)
,在高负载情况下,它要快的多
安全:它努力的保护主机不受到攻击,不中断服务器
thttpd
类似于
lighttpd
,
对于并发请求不使用
fork()
来派生子进程处理,
而是采用多路复用
(Multiplex)
技术来实现。
因此效能很好。同时它还有一个特点就是基于
URL
的文件流量限制,这对于下载的流量控制而言是非常方便的。象
Apache
就必须使用插件实现,效率较
thttpd
低。
thttpd
跟
lighttpd
类似,适合静态资源类的服务,比如图片、资源文件、静态
HTML
等等的应用,性能应该比较
好,同时也适合简单的
CGI
应用的场合。
官方地址:
http://www.***.com/software/thttpd/
下载地址:
http://www.***.com/software/thttpd/thttpd-2.***.gz
【
lighttpd - light footprint + httpd = LightTPD
】
Lighttpd
是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好
并且灵活的
web server
环境。具有非常低的内存开销,
cpu
占用率低,效能好,以及丰富的模块等特点。
lighttpd
是众多
OpenSource
轻量级的
web
server
中较为优秀的一个。支持
FastCGI,
CGI,
Auth,
输出压缩
(output
compress), URL
重写
, Alias
等重要功能,
而
Apache
之所以流行,
很大程度也是因为功能丰富,
在
lighttpd
上很多功能
都有相应的实现了,这点对于
apache
的用户是非常重要的,因为迁移到
lighttpd
就必须面对这些问题。
实用起来
lighttpd
确实非常不错,
apache
主要的问题是密集并发下,
不断的
fork()
和切换,
以及较高
(相对于
lighttpd
而言)的内存占用,使系统的资源几尽枯竭。而
lighttpd
采用了
Multiplex
技术,代码经过优化,体积非常小,资源
占用很低,而且反应速度相当快。
利用
apache
的
rewrite
技术,将繁重的
cgi/fastcgi
任务交给
lighttpd
来完成,充分利用两者的优点,现在那台服
务器的负载下降了一个数量级,而且反应速度也提高了一个甚至是
2
个数量级!