三大WEB伺服器對比分析(apache ,lighttpd,nginx)

lankecms發表於2016-04-10

一.軟體介紹(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不間斷執行,即使執行數個月也不需要重新啟動。你還能夠在不間斷服務的情況下,對軟體版本進行進行升級。

.3WEB伺服器的比較:

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

Feedback

# re: 三大WEB伺服器對比分析(apache ,lighttpd,nginx)   回覆  更多評論   

2009-11-10 14:13 by 招聘
這樣看lighttpd大網站用的不多嘛

# re: 三大WEB伺服器對比分析(apache ,lighttpd,nginx)   回覆  更多評論   

2010-04-21 10:57 by ablo
很好的文章,謝謝!

# re: 三大WEB伺服器對比分析(apache ,lighttpd,nginx)   回覆  更多評論   

2011-04-18 15:18 by Hector
非常詳細呀。非常好。。

# re: 三大WEB伺服器對比分析(apache ,lighttpd,nginx)   回覆  更多評論   

2011-05-10 11:46 by George Wing
是08年時的文章,學習了~謝謝~!

# re: 三大WEB伺服器對比分析(apache ,lighttpd,nginx)   回覆  更多評論   

2011-07-05 14:34 by coolesting
這樣看lighttpd大網站用的不多嘛
----------------------------------

大網站一般都幾個一起用, 前邊放的nginx, 後邊放在lighttpd, 從上面的效能表就看得出, 

而apache比較綜合性, 建中小網站比較合適, 功能強大, 應用廣,
至於大網站, 負載上有問題, 所以用得少。

coolesting@gmail.com

# re: 三大WEB伺服器對比分析(apache ,lighttpd,nginx) [未登入]  回覆  更多評論   

2011-08-17 17:01 by 小小
主要是關心這些效能測試資料如何得來????使用的是什麼工具統計???

# re: 三大WEB伺服器對比分析(apache ,lighttpd,nginx)   回覆  更多評論   

2011-09-02 14:39 by sake
很多網站是前端nginx後端lighttpd。

# re: 三大WEB伺服器對比分析(apache ,lighttpd,nginx)   回覆  更多評論   

2011-10-13 10:13 by heronote
Free nginx eBook: 

http://www.heronote.com/files/nginx.htm

# re: 三大WEB伺服器對比分析(apache ,lighttpd,nginx)   回覆  更多評論   

2011-11-01 16:36 by rmn190
請能從實現原理上分析下, 上面三個web伺服器在各效能指標方面的差異?

# re: 三大WEB伺服器對比分析(apache ,lighttpd,nginx)   回覆  更多評論   

2013-05-04 10:42 by 霢霂
nginx在08年時不支援Vhost虛擬主機嗎?

# re: 三大WEB伺服器對比分析(apache ,lighttpd,nginx)   回覆  更多評論   

2013-07-10 23:48 by kunkun
那到底怎麼區分大小網站呢?

# re: 三大WEB伺服器對比分析(apache ,lighttpd,nginx)   回覆  更多評論   

2013-08-22 05:31 by hijack
百度      unknown ---百度的OS用的也是Linux,發行版是Red Hat

# re: 三大WEB伺服器對比分析(apache ,lighttpd,nginx)   回覆  更多評論   

2013-10-14 23:30 by yhmhost
lighttpd 有時候不太穩定 虛擬主機經常出現打不開情況 使用NGINX就穩定多了 俄羅斯人在軟體技術方面比德國人高明許多

# re: 三大WEB伺服器對比分析(apache ,lighttpd,nginx)   回覆  更多評論   

2014-01-06 21:49 by 呂津
good.

# re: 三大WEB伺服器對比分析(apache ,lighttpd,nginx) [未登入]  回覆  更多評論   

2014-06-30 11:51 by ryan
文章有點舊了,現在nginx是獨佔鰲頭啊!

# re: 三大WEB伺服器對比分析(apache ,lighttpd,nginx)   回覆  更多評論   

2014-12-16 01:25 by 閆迎強
現在雲主機上幾乎清一色的nginx,Apache都很少用了

相關文章