


apache與lighttpd、nginx三大WEB服務器平臺分析
這篇沒有把IIS服務器列入其中,因為IIS只能在Windows上跑,而apache與lighttpd、nginx這三個WEB網站服務器可以在各種平臺上跑。下面看文章的分析:
一.軟件介紹(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
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
關鍵詞:web 服務器
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解