來自http://www.cnblogs.com/oubo/archive/2012/05/21/2511726.html
本次調研主要對目前主流的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的內存泄漏問題。
# 對比

# 總結(靜態資源)
## 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](http://www.blogjava.net/daniel-tu/archive/2008/12/29/248883.html)
在Windows下的性能評測見:[http://down.chinaz.com/server/201202/1614_1.htm](http://down.chinaz.com/server/201202/1614_1.htm)
從網友的實際評測結果來看,對靜態資源訪問的服務器還是Nginx最好。
- 誰能舉個通俗易懂的例子告訴我IAAS,SAAS,PAAS的區別?
- 服務器與容器
- 常見NIO框架
- Nginx/Apache 和Apache Tomcat 的區別
- tomcat結合nginx使用小結
- java nio框架netty 與tomcat的關系
- Nginx、Lighttpd與Apache的區別
- Apache vs Lighttpd vs Nginx對比
- 數據庫
- mybatis
- MyBatis傳入多個參數的問題
- MS
- JMS(Java消息服務)入門教程
- ActiveMQ
- JMS簡介與ActiveMQ實戰
- JMS-使用消息隊列優化網站性能
- 深入淺出JMS(一)--JMS基本概念
- 深入淺出JMS(二)--ActiveMQ簡單介紹以及安裝
- 深入淺出JMS(三)--ActiveMQ簡單的HelloWorld實例
- RabbitMq、ActiveMq、ZeroMq、kafka之間的比較,資料匯總
- kafka
- zookeeper
- 集群與負載
- 單機到分布式集群
- 日志
- 從Log4j遷移到LogBack的理由
- 角色權限
- shiro
- Shiro的認證和權限控制
- Spring 整合 Apache Shiro 實現各等級的權限管理
- 安全
- basic
- Servlet、Filter、Listener深入理解
- filter與servlet的比較
- Servlet Filter