一.軟件介紹(apache lighttpd nginx) php
1. lighttpd html
Lighttpd是一個具備很是低的內存開銷,cpu佔用率低,效能好,以及豐富的模塊等特色。lighttpd是衆多OpenSource輕量級的web server中較爲優秀的一個。支持FastCGI, CGI, Auth, 輸出壓縮(output compress), URL重寫, Alias等重要功能。 前端
Lighttpd使用fastcgi方式運行php,它會使用不多的PHP進程響應很大的併發量。 java
Fastcgi的優勢在於: python
· 從穩定性上看, fastcgi是以獨立的進程池運行來cgi,單獨一個進程死掉,系統能夠很輕易的丟棄,而後從新分配新的進程來運行邏輯. linux
· 從安全性上看, fastcgi和宿主的server徹底獨立, fastcgi怎麼down也不會把server搞垮, nginx
· 從性能上看, fastcgi把動態邏輯的處理從server中分離出來, 大負荷的IO處理仍是留給宿主server, 這樣宿主server能夠一心一意做IO,對於一個普通的動態網頁來講, 邏輯處理可能只有一小部分, 大量的圖片等靜態IO處理徹底不須要邏輯程序的參與(注1) web
· 從擴展性上講, fastcgi是一箇中立的技術標準, 徹底能夠支持任何語言寫的處理程序(php,java,python...) apache
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 |
130 |
140.57 |
71.140 |
100000/500 |
73 |
150 |
135.87 |
73.601 |
100000/1000 |
77 |
160 |
132.18 |
75.657 |
APACHE 出現丟包
n/-c(ab參數) |
cpu% |
Mem |
RequestsperSecond |
Time taken for tests |
100000/100 |
70 |
180 |
245.73 |
40.694 |
100000/200 |
72 |
190 |
245.79 |
40.684 |
100000/500 |
75 |
200 |
241.29 |
41.443 |
100000/1000 |
77 |
220 |
236.74 |
42.239 |
四.各大網站WEB服務器資源列表
網站名 操做系統 web服務器
1.門戶網站類:
搜狐 LINUX apache 1.3.37
新浪 LINUX apache 2.0.54
迅雷 LINUX nginx 0.6.31
163 LINUX apache 2.2.6
2.搜索類
百度 unknown BWS 1.0
Google linux gws
Sougou FreeBSD apache 2.2.4
Hao123 linux apache 2.2.4
4. 電子郵箱類
126 linux apache
Hotmail win2003 microsoft-IIS 6.0
新浪郵箱 F5 Big-IP apache 2.2.8
263 linux apache 2.2.6
5. 博客類
新浪博客 linux nginx 0.5.35
搜狐博客 linux nginx
迅雷博客 linux nginx 0.6.32
天涯博客 F5 Big-IP Microsoft-IIS/5.0
6.視頻類
優酷 linux apache
土豆 linux apache
Ku6 linux apache
六間房 linux nginx 0.6.14