from:井中月blog,http://www.blogjava.net/daniel-tu/archive/2008/12/29/248883.html
一.软件介绍 (apache lighttpd nginx)
1. lighttpd
Lighttpd 是一个具有非常低的内存开销, cpu 占用率低,效能好,以及丰富的模块等特点。 lighttpd 是众多 OpenSource 轻量级的 web server 中较为优秀的一个。支持 FastCGI, CGI, Auth, 输出压缩 (output compress), URL 重写 , Alias 等重要功能。
Lighttpd 使用 fastcgi 方式运行 php, 它会使用很少的 PHP 进程响应很大的并发量。
Fastcgi 的优点在于:
· 从稳定性上看 , fastcgi 是以独立的进程池运行来 cgi, 单独一个进程死掉 , 系统可以很轻易的丢弃 , 然后重新分配新的进程来运行逻辑 .
· 从安全性上看 , fastcgi 和宿主的 server 完全独立 , fastcgi 怎么 down 也不会把 server 搞垮 ,
· 从性能上看 , fastcgi 把动态逻辑的处理从 server 中分离出来 , 大负荷的 IO 处理还是留给宿主 server, 这样宿主 server 可以一心一意作 IO, 对于一个普通的动态网页来说 , 逻辑处理可能只有一小部分 , 大量的图片等静态 IO 处理完全不需要逻辑程序的参与 ( 注 1)
· 从扩展性上讲 , fastcgi 是一个中立的技术标准 , 完全可以支持任何语言写的处理程序 (php,java,python...)
2. apache
apache 是世界排名第一的 web 服务器 , 根据 netcraft(www.netsraft.co.uk ) 所作的调查 , 世界上百分之五十以上的 web 服务器在使用 apache.
1995 年 4 月 , 最早的 apache(0.6.2 版 ) 由 apache group 公布发行 . apache group 是一个完全通过 internet 进行运作的非盈利机构 , 由它来决定 apache web 服务器的标准发行版中应该包含哪些内容 . 准许任何人修改隐错 , 提供新的特征和将它移植到新的平台上 , 以及其它的工作 . 当新的代码被提交给 apache group 时 , 该团体审核它的具体内容 , 进行测试 , 如果认为满意 , 该代码就会被集成到 apache 的主要发行版中 .
apache 的特性 :
1) 几乎可以运行在所有的计算机平台上 .
2) 支持最新的 http/1.1 协议
3) 简单而且强有力的基于文件的配置 (httpd.conf).
4) 支持通用网关接口 (cgi)
5) 支持虚拟主机 .
6) 支持 http 认证 .
7) 集成 perl.
8) 集成的代理服务器
9) 可以通过 web 浏览器监视服务器的状态 , 可以自定义日志 .
10) 支持服务器端包含命令 (ssi).
11) 支持安全 socket 层 (ssl).
12) 具有用户会话过程的跟踪能力 .
13) 支持 fastcgi
14) 支持 java servlets
3. nginx
Nginx 是俄罗斯人编写的十分轻量级的 HTTP 服务器 ,Nginx ,它的发音为 “engine X” , 是一个高性能的 HTTP 和反向代理服务器,同时也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由俄罗斯人 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发 .
Nginx 以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。其拥有匹配 Lighttpd 的性能,同时还没有 Lighttpd 的内存泄漏问题,而且 Lighttpd 的 mod_proxy 也有一些问题并且很久没有更新。但是 Nginx 并不支持 cgi 方式运行,原因是可以减少因此带来的一些程序上的漏洞。所以必须使用 FastCGI 方式来执行 PHP 程序。
nginx 做为 HTTP 服务器,有以下几项基本特性:
处理静态文件,索引文件以及自动索引;打开文件描述符缓冲.
无缓存的反向代理加速,简单的负载均衡和容错.
FastCGI ,简单的负载均衡和容错.
模块化的结构。包括 gzipping, byte ranges, chunked responses, 以及 SSI-filter 等 filter 。如果由 FastCGI 或其它代理服务器处理单页中存在的多个 SSI ,则这项处理可以并行运行,而不需要相互等待。
Nginx 专为性能优化而开发,性能是其最重要的考量 , 实现上非常注重效率。它支持内核 Poll 模型,能经受高负载的考验 , 有报告表明能支持高达 50,000 个并发连接数。
Nginx 具有很高的稳定性。其它 HTTP 服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器。例如当前 apache 一旦上到 200 个以上进程, web 响应速度就明显非常缓慢了。而 Nginx 采取了分阶段资源分配技术,使得它的 CPU 与内存占用率非常低。 nginx 官方表示保持 10,000 个没有活动的连接,它只占 2.5M 内存,所以类似 DOS 这样的攻击对 nginx 来说基本上是毫无用处的。就稳定性而言 ,nginx 比 lighthttpd 更胜一筹。
Nginx 支持热部署。它的启动特别容易 , 并且几乎可以做到 7*24 不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行进行升级。
二 .3 种 WEB 服务器的比较:
server |
Apache |
Nginx |
Lighttpd |
Proxy 代理 |
非常好 |
非常好 |
一般 |
Rewriter |
好 |
非常好 |
一般 |
Fcgi |
不好 |
好 |
非常好 |
热部署 |
不支持 |
支持 |
不支持 |
系统压力比较 |
很大 |
很小 |
比较小 |
稳定性 |
好 |
非常好 |
不好 |
安全性 |
好 |
一般 |
一般 |
技术支持 |
非常好 |
很少 |
一般 |
静态文件处理 |
一般 |
非常好 |
好 |
Vhosts 虚拟主机 |
支持 |
不支持 |
支持 |
反向代理 |
一般 |
非常好 |
一般 |
Session sticky |
支持 |
不支持 |
不支持 |
注:在相对 比较 大的网站,节约下来的服务器成本无疑是客观的。而有些小型网站往往服务器不多,如果采用 Apache 这类传统 Web 服务器,似乎也还能撑过去。但有其很明显的弊端: Apache 在处理流量爆发的时候 ( 比如爬虫或者是 Digg 效应 ) 很容易过载,这样的情况下采用 Nginx 最为合适。
建议方案:
Apache 后台服务器(主要处理 php 及一些功能请求 如:中文 url )
Nginx 前端服务器(利用它占用系统资源少得优势来处理静态页面大量请求)
Lighttpd 图片服务器
总体来说,随着 nginx 功能得完善将使他成为今后 web server 得主流。
三 . 性能测试 :
将分别测试 3 种软件在对动态页面和静态页面请求及并发时的响应时间
l 静态页面 搜狐首页
LIGHTTPD
n/-c(ab 参数) |
cpu% |
Mem |
RequestsperSecond |
Time taken for tests |
100000/100 |
64 |
60 |
462.75 |
21.6 |
100000/200 |
67 |
60 |
312.07 |
32.4 |
100000/500 |
83 |
60 |
137.24 |
72.8 |
100000/1000 出现错误丢包 |
94 |
60 |
126.6 |
78.9 |
NGINX
n/-c(ab 参数) |
cpu% |
Mem |
RequestsperSecond |
Time taken for tests |
100000/100 |
34.6 |
140 |
943.66 |
10.597 |
100000/200 |
35.6 |
110 |
924.32 |
10.818 |
100000/500 |
34.3 |
110 |
912.68 |
10.956 |
100000/1000 |
37 |
160 |
832.59 |
12.106 |
APACHE
n/-c(ab 参数) |
cpu% |
Mem |
RequestsperSecond |
Time taken for tests |
100000/100 |
40.6 |
170 |
690.72 |
14.47 |
100000/200 |
41.1 |
180 |
685.39 |
14.59 |
100000/500 |
42.3 |
190 |
633.64 |
15.78 |
100000/1000 |
43.1 |
200 |
547.53 |
18.26 |
l 动态页面 内部社区首页
LIGHTTPD
n/-c(ab 参数) |
cpu% |
Mem |
RequestsperSecond |
Time taken for tests |
1000/100 |
50 |
200 |
33.54 |
29.816 |
1000/200 |
52 |
210 |
30.43 |
32.858 |
1000/500 |
54 |
230 |
25.79 |
38.76 |
1000/1000 |
62 |
250 |
24.83 |
40.28 |
NGINX
n/-c(ab 参数) |
cpu% |
Mem |
RequestsperSecond |
Time taken for tests |
1000/100 |
53.8 |
250 |
83.12 |
12.305 |
1000/200 |
55.8 |
250 |
74.05 |
13.504 |
1000/500 |
56 |
260 |
58.99 |
16.951 |
1000/1000 |
58 |
260 |
43.41 |
23.347 |
APACHE
n/-c(ab 参数) |
cpu% |
Mem |
RequestsperSecond |
Time taken for tests |
100000/100 |
60 |
200 |
27.37 |
36.541 |
100000/200 |
61 |
220 |
23.82 |
41.981 |
100000/500 |
73 |
150 |
20.59 |
48.562 |
100000/1000 |
53 |
200 |
27.18 |
36.796 |
l PHPINFO 函数页
LIGHTTPD
n/-c(ab 参数) |
cpu% |
Mem |
RequestsperSecond |
Time taken for tests |
100000/100 |
45 |
20 |
168.06 |
59.504 |
100000/200 |
47 |
22 |
140.64 |
71.103 |
100000/500 |
49 |
24 |
52.80 |
189.386 |
100000/1000 |
在请求到4840时测试测试程序死掉 |
NGINX
n/-c(ab 参数) |
cpu% |
Mem |
RequestsperSecond |
Time taken for tests |
100000/100 |
70 |
120 |
143.46 |
69.706 |
100000/200 |
72 |
text-indent: 24p 发表评论
最新评论
|
评论