本次調研主要對目前主流的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和反向代理服務器,Nginx以事件驅動的方式編寫,所以有非常好的性能,同時也是一個非常高效的反向代理、負載平衡。其擁有匹配 Lighttpd的性能,同時還沒有Lighttpd的內存泄漏問題。
對比
server |
Apache |
Nginx |
Lighttpd |
Proxy代理 |
非常好 |
非常好 |
一般 |
Rewriter |
好 |
非常好 |
一般 |
Fastcgi |
不好 |
好 |
非常好 |
熱部署 |
不支持 |
支持 |
不支持 |
系統壓力比較 |
很大 |
很小 |
比較小 |
穩定性 |
好 |
非常好 |
不好 |
安全性 |
好 |
一般 |
一般 |
技術支持 |
非常好 |
很少 |
一般 |
靜態文件處理 |
一般 |
非常好 |
好 |
Vhosts虛擬主機 |
支持 |
支持 |
支持 |
反向代理 |
一般 |
非常好 |
一般 |
Session sticky |
支持 |
不支持 |
不支持 |
量級 |
重量級 |
輕量 |
輕量 |
復雜度(安裝、配置) |
較復雜 |
簡單 |
簡單 |
總結(靜態資源)
Apache:
-
優點:
- Apache的兼容性和穩定性都是非常強
- Apache 的模塊比 Nginx/Lighttpd豐富
- Apache在處理動態請求比Nginx/Lighttpd更有優勢
-
缺點:
- 屬於重量級web服務器(重量級主要是在軟件包的大小上比較大,軟件的耦合度大)
- 在速度、性能不及其他輕量級web服務器,並且消費內存較高。使用傳統的select模型,比較穩定的Prefork模式為多進程模式,需要經常派生子進程。所以消耗的cpu等服務器資源比較大。
Lighttpd:
-
優點:
-
虛機的配置處理方式比 apache 直觀,比Apache輕量
- 輕量級web服務器,cpu占用低,效能好,模塊豐富,對fastcgi支持非常好。
- 支持高並發,和Nginx差不多,比apache性能高很多。
-
缺點:
- 穩定性沒有Apache和Nginx高,bug相對較多
Nginx:
-
優點:
- 輕量級,比apache 占用更少的內存及資源
- 抗並發,nginx 處理請求是異步非阻塞的,而apache 則是阻塞型的,在高並發下nginx 能保持低資源低消耗高性能
- 高度模塊化的設計,編寫模塊相對簡單
- 有Lighttpd的性能,且更穩定,沒有其內存泄露問題;
- 處理靜態文件,索引文件以及自動索引,打開文件描述符緩沖。
-
缺點:
- nginx處理動態請求是雞肋,不如Apache;
建議方案:
Apache 后台服務器(主要處理php及一些動態請求);Nginx 前端服務器(高並發請求、靜態資源、負載均衡、反向代理和前端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最好。