文章目錄
本次調研主要對目前主流的WEB伺服器Apache/Lighttpd/Nginx下靜態檔案的訪問進行對比。主要從效能、穩定性、簡易性(安裝、配置、依賴、大小)等方面入手。最後在Windows環境下,對其效能進行比較。
簡介1. Apache
Apache是世界使用排名第一的Web伺服器軟體。它可以運行在幾乎所有廣泛使用的電腦平台上,由於其跨平台和安全性被廣泛使用,是最流行的Web伺服器端軟體之一。Apache能取得如此成功並不足為奇:它免費、穩定且效能卓越;但Apache能取得如此佳績的另一個原因是,當時互連網剛剛興起時,Apache是第一個可用的Web應用伺服器,人們沒有其他的選擇。
對於那些需要更強大的Web應用伺服器(比如大小、可定製、響應速度、可擴充性等方面)的人而言,Apache明顯不符合他們的要求,尋找Apache的替代者是更好的選擇。
2. Lighttpd
Lighttpd是一個具有非常低的記憶體開銷,cpu佔用率低,效能好,以及豐富的模組等特點。lighttpd是眾多OpenSource輕量級的web server中較為優秀的一個。支援FastCGI, CGI, Auth, 輸出壓縮(output compress), URL重寫, Alias等重要功能。
3. Nginx(Ngwsx)
Nginx是十分輕量級的HTTP伺服器,是一個高效能的HTTP和反向 Proxy伺服器,Nginx以事件驅動的方式編寫,所以有非常好的效能,同時也是一個非常高效的反向 Proxy、Server Load Balancer。其擁有匹配 Lighttpd的效能,同時還沒有Lighttpd的記憶體流失問題。
對比
server |
Apache |
Nginx |
Lighttpd |
Proxy代理 |
非常好 |
非常好 |
一般 |
Rewriter |
好 |
非常好 |
一般 |
Fastcgi |
不好 |
好 |
非常好 |
熱部署 |
不支援 |
支援 |
不支援 |
系統壓力比較 |
很大 |
很小 |
比較小 |
穩定性 |
好 |
非常好 |
不好 |
安全性 |
好 |
一般 |
一般 |
支援人員 |
非常好 |
很少 |
一般 |
靜態檔案處理 |
一般 |
非常好 |
好 |
Vhosts虛擬機器主機 |
支援 |
支援 |
支援 |
反向 Proxy |
一般 |
非常好 |
一般 |
Session sticky |
支援 |
不支援 |
不支援 |
量級 |
重量級 |
輕量 |
輕量 |
複雜度(安裝、配置) |
較複雜 |
簡單 |
簡單 |
總結(靜態資源)Apache:
- 優點:
- Apache的相容性和穩定性都是非常強
- Apache 的模組比 Nginx/Lighttpd豐富
- Apache在處理動態請求比Nginx/Lighttpd更有優勢
- 缺點:
-
- 屬於重量級web伺服器(重量級主要是在軟體包的大小上比較大,軟體的耦合度大)
- 在速度、效能不及其他輕量級web伺服器,並且消費記憶體較高。使用傳統的select模型,比較穩定的Prefork模式為多進程模式,需要經常派生子進程。所以消耗的cpu等伺服器資源比較大。
Lighttpd:
- 優點:
- 缺點:
- 穩定性沒有Apache和Nginx高,bug相對較多
Nginx:
- 優點:
- 輕量級,比apache 佔用更少的記憶體及資源
- 抗並發,nginx 處理請求是非同步非阻塞的,而apache 則是阻塞型的,在高並發下nginx 能保持低資源低消耗高效能
- 高度模組化的設計,編寫模組相對簡單
- 有Lighttpd的效能,且更穩定,沒有其記憶體泄露問題;
- 處理靜態檔案,索引檔案以及自動索引,開啟檔案描述符緩衝。
建議方案:
Apache 後台伺服器(主要處理php及一些動態請求);Nginx 前端伺服器(高並發請求、靜態資源、負載平衡、反向 Proxy和前端Cache等)。
效能測試
在Linux下的效能評測見:http://www.blogjava.net/daniel-tu/archive/2008/12/29/248883.html
在Windows下的效能評測見:http://down.chinaz.com/server/201202/1614_1.htm
從網友的實際評測結果來看,對靜態資源訪問的伺服器還是Nginx最好。