1. 程式人生 > >Apache、nginx 、lighttpd效能比較

Apache、nginx 、lighttpd效能比較

1. web伺服器簡介

1. lighttpd

     Lighttpd是一個德國人領導的開源軟體,其根本的目的是提供一個專門針對高效能網站,安全、快速、相容性好並且靈活的Web server環境   

     Lighttpd是一個具有非常低的記憶體開銷,cpu佔用率低,效能好,以及豐富的模組等特點。lighttpd是眾多OpenSource輕量級的web server中較為優秀的一個。支援FastCGI, CGI, Auth, 輸出壓縮(output compress), URL重寫, Alias等重要功能。

     而Apache之所以流行,很大程度也是因為功能豐富,在Lighttpd 上很多功能都有相應的實現了,這點對於Apache的使用者是非常重要的,因為遷
移到Lighttpd就必須面對這些問題。

    Lighttpd使用fastcgi方式執行PHP,它會使用很少的php程序響應很大的併發量。其fastCGI程序管理器一般使用spawn-fcgi

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的主要發行版中.

    它有優勢主要在於原始碼開放、有一支開放的開發隊伍、支援跨平臺的應用(可以執行在幾乎所有的Unix、Linux、Windows系統平臺之上)。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(只在apache1.3時支援,apache2以後的版本不再支援了)

   14) 支援Java servlets

   15) 不支援epoll(這年頭,epoll幾乎是效能的必備,這也是為什麼apache的併發效能比其他兩款web軟體差的主要原因吧)

   16) 非常好用的proxy和proxy_ajp(很多人用它作為tomcat的前端)

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伺服器,有以下幾項基本特性:

    1)處理靜態檔案,索引檔案以及自動索引;開啟檔案描述符緩衝.

    2)無快取的反向代理加速,簡單的負載均衡和容錯.

    3)FastCGI,簡單的負載均衡和容錯.

    4)模組化的結構。包括gzipping, byte ranges, chunked responses,以及 SSI-filter等filter。如果由FastCGI或其它代理伺服器處理單頁中存在的多個SSI,則這項處理可以並行執行,而不需要相互等待。

    5) Nginx專為效能優化而開發,效能是其最重要的考量,實現上非常注重效率。它支援核心Poll模型,能經受高負載的考驗,有報告表明能支援高達 50,000個併發連線數。

    6) Nginx具有很高的穩定性。其它HTTP伺服器,當遇到訪問的峰值,或者有人惡意發起慢速連線時,也很可能會導致伺服器實體記憶體耗盡頻繁交換,失去響應,只能重啟伺服器。例如當前apache一旦上到200個以上程序,web響應速度就明顯非常緩慢了。而Nginx採取了分階段資源分配技術,使得它的CPU與記憶體佔用率非常低。nginx官方表示保持10,000個沒有活動的連線,它只佔2.5M記憶體,所以類似DOS這樣的攻擊對nginx來說基本上是毫無用處的。就穩定性而言,nginx比lighthttpd更勝一籌。

    7) Nginx支援熱部署。它的啟動特別容易, 並且幾乎可以做到7*24不間斷執行,即使執行數個月也不需要重新啟動。你還能夠在不間斷服務的情況下,對軟體版本進行進行升級。

2. Nginx與Apache的異同

    Nginx和Apache一樣,都是HTTP伺服器軟體,在功能實現上都採用模組化結構設計,都支援通用的語言介面,如PHP、Perl、Python等,同時還支援正向和反向代理、虛擬主機、URL重寫、壓縮傳輸、SSL加密傳輸等。

    1)在功能實現上,Apache的所有模組都支援動、靜態編譯,而Nginx模組都是靜態編譯的,

    2)對FastCGI的支援,Apache對Fcgi的支援不好,而Nginx對Fcgi的支援非常好;

     3)在處理連線方式上,Nginx支援epoll,而Apache卻不支援;

     4)在空間使用上,Nginx安裝包僅僅只有幾百K,和Nginx比起來Apache絕對是龐然大物。

1) 

Nginx 相對apache的優點:

輕量級,同樣起web 服務,比apache 佔用更少的記憶體及資源

靜態處理,Nginx 靜態處理效能比 Apache 高 3倍以上

抗併發,nginx 處理請求是非同步非阻塞的,而apache則是阻塞型的,在高併發下nginx 能保持低資源低消耗高效能。在Apache+PHP(prefork)模式下,如果PHP處理慢或者前端壓力很大的情況下,很容易出現Apache程序數飆升,從而拒絕服務的現象。 

    高度模組化的設計,編寫模組相對簡單

    社群活躍,各種高效能模組出品迅速啊

2) apache 相對nginx 的優點:

    rewrite,比nginx 的rewrite 強大

    模組超多,基本想到的都可以找到

    少bug,nginx的bug相對較多

    超穩定

    Apache對PHP支援比較簡單,Nginx需要配合其他後端用 

    存在就是理由,一般來說,需要效能的web 服務,用nginx 。如果不需要效能只求穩定,那就apache 吧。後者的各種功能模組實現得比前者,例如ssl 的模組就比前者好,可配置項多。

   這裡要注意一點,epoll(freebsd 上是 kqueue )網路IO 模型是nginx 處理效能高的根本理由,但並不是所有的情況下都是epoll 大獲全勝的,如果本身提供靜態服務的就只有寥寥幾個檔案,apache 的select 模型或許比epoll更高效能。當然,這只是根據網路IO 模型的原理作的一個假設,真正的應用還是需要實測了再說的。

3) . 選擇Nginx的優勢所在

    Nginx作為HTTP伺服器的優勢是顯而易見的,它有很多其他Web伺服器無法比擬的效能和優勢:

1) 作為Web伺服器: Nginx處理靜態檔案、索引檔案,自動索引的效率非常高。

2) 作為代理伺服器,Nginx可以實現無快取的反向代理加速,提高網站執行速度。

3) 作為負載均衡伺服器,Nginx既可以在內部直接支援Rails和PHP,也可以支援HTTP代理伺服器對外進行服務,同時還支援簡單的容錯和利用演算法進行負載均衡。

4) 在效能方面,Nginx是專門為效能優化而開發的,在實現上非常注重效率。它採用核心Poll模型(epoll and kqueue ),可以支援更多的併發連線,最大可以支援對50 000個併發連線數的響應,而且只佔用很低的記憶體資源。

5) 在穩定性方面,Nginx採取了分階段資源分配技術,使得CPU與記憶體的佔用率非常低。Nginx官方表示,Nginx保持10 000個沒有活動的連線,而這些連線只佔用2.5MB記憶體,因此,類似DOS這樣的攻擊對Nginx來說基本上是沒有任何作用的。

6) 在高可用性方面,Nginx支援熱部署,啟動速度特別迅速,因此可以在不間斷服務的情況下,對軟體版本或者配置進行升級,即使執行數月也無需重新啟動,幾乎可以做到7×24小時不間斷地執行。

   這兩者最核心的區別在於apache是同步多程序模型,一個連線對應一個程序;nginx是非同步的,多個連線(萬級別)可以對應一個程序 。

   建議使用Nginx做前端,後端用apache。大型網站最好使用Nginx自帶的叢集功能。

Nginx和apache壓力測試資料比較:

apache nginx
n c Time r/s t/r(ms) Time r/s t/r
40000 200 45 886 225 41 955 209
40000 200 36 1091 183 40 986 202
40000 400 361 110 3614 49 813 491
40000 400 49 811 492 38 1027 389
40000 400 38 1037 385 41 963 415
40000 1000 407 98 10177 51 773 1292
40000 1000 323 123 8091
40000 5000 349 114 43660 53 741 6742
40000 10000 364 109 91142 69 574 17394
40000 15000 369 108 138665 310

伺服器資料:
n c sys sys
40000 200 ProcessNum:223 Mem:130.0 CPU:253.2 Load:2.57
ProcessNum:209 Mem:121.5 CPU:186.7 Load:3.52
ProcessNum:35 Mem:7.1 CPU:0 Load:0.29
ProcessNum:35 Mem:7.1 CPU:7.8 Load:5.99
40000 400 ProcessNum:177 Mem:134.3 CPU:55.3 Load:0.46
ProcessNum:413 Mem:239.3 CPU:122.4 Load:3.52
ProcessNum:35 Mem:10.7 CPU:5.9 Load:0.04
ProcessNum:38 Mem:10.7 CPU:29.1 Load:5.08
40000 1000
ProcessNum:188 Mem:92.9 CPU:10.8 Load:0.01
ProcessNum:401 Mem:200.0 CPU:15.3 Load:1.43
ProcessNum:39 Mem:7.1 CPU:8.3 Load:3.08
ProcessNum:39 Mem:7.1 CPU:15.6 Load:4.21

轉自:http://blog.csdn.net/hguisu/article/details/7403622

相關推薦

Apachenginx lighttpd效能比較

1. web伺服器簡介 1. lighttpd      Lighttpd是一個德國人領導的開源軟體,其根本的目的是提供一個專門針對高效能網站,安全、快速、相容性好並且靈活的Web server環境         Lighttpd是一個具有非常低的記憶體開銷

ApacheNginxTomcatPHP的區別

linuxapachenginxApache、Nginx、Tomcat、PHP的區別Apache和Nginx算是市面上兩款比較強大的WEB服務軟件。Apache的優點:支持模塊多,功能多運行穩定性強支持PHP模塊,無需安裝其他多余的組件就可以實現.php動態頁面的解析地址重寫功能(rewrite)強大Ngin

IIsNginxApache三大主流web服務器偽靜態的詳細設置過程

IIs Nginx Apache 偽靜態 偽靜態什麽設置 此文章裏面的內容就包含了IIs、Nginx、Apache三大主流web服務器偽靜態詳細的設置。 文章地址http://blog.51cto.com/lccee/2068828IIs、Nginx、Apache三大主流web服務器偽靜態

centos7重啟apachenginxmysqlphp-fpm命令

httpd stop 啟動 sta fpm start res gin SQ apache 啟動 systemctl start httpd 停止 systemctl stop httpd 重啟 systemctl restart httpd mysql 啟動 system

gentoo安裝apachenginxphpmariadbopenssl(https)

alt 現在 bubuko 都是 ria https協議 圖片 裝系統 cat 本文用於記錄用gentoo安裝apache、nginx、php、mariadb、openssl(https),之前安裝花費了幾天時間,現記錄以供以後查閱,歡迎指點。 由於安裝的時候沒有做筆記,現

IIS 6.0/7.0/7.5NginxApache 等Web Service解析漏洞總結 Apache解析漏洞詳解

[+]IIS 6.0 目錄解析:/xx.asp/xx.jpg  xx.jpg可替換為任意文字檔案(e.g. xx.txt),文字內容為後門程式碼 IIS6.0 會將 xx.jpg 解析為 asp 檔案。 字尾解析:/xx.asp;.jpg     /xx

大型網際網路公司必備的架構技術棧——分散式架構高可擴充套件高效能高併發效能優化Spring bootRedisActiveMQNginxMycatNettyJvm大型分散式專案實戰

效能優化 JVM調優 Java程式效能優化 Tomcat Mysql Spring IOC Spring AOP Spring MVC Spring 5新特性 Mybatis 分散式架構 架構核心服務層技術 架構關鍵技術設施 分散式訊息通訊 非同

CentOS 7 firewalld新增開放埠及重啟apachenginxmysqlphp-fpm命令 & CentOS 6.5開放埠方法

How to resolve the error message belowFailed to issue method call: Unit firewalld.service is masked. The main reason a service is masked is to prevent acc

Java高架構師分散式架構高可擴充套件高效能高併發效能優化Spring bootRedisActiveMQNginxMycatNettyJvm大型分散式專案實戰學習架構師之路

工作1-5年開發經驗,當你們提出漲工資的時候,或者要offer的時候底氣怎麼樣,是不是底氣十足,不給漲工資就辭職,是不是有自信提出來主管、或者是專案經理都能同意,他們相當設法把你留住。如果這樣你才是成功。什麼技術都沒有何談工資! 給你分析一下這些技術,給大家羅列一些技術,看

haproxylvsnginx 負載均衡的比較和分析

     不過就因為LVS忒牛了,配置也最麻煩了,而且健康檢測需要另外配置Ldirector,其他HAPROXY和NGINX自己就用,而且配置超級簡單。        所以小D建議,如果網站訪問量不是門戶級別的用HAPROXY或者NGINX就OK了,到了門戶級別在用LVS+Idirector吧 哈哈    

lvshaproxynginx 負載均衡的比較分析

對軟體實現負載均衡的幾個軟體,小D詳細看了一下,從效能和穩定上還是LVS最牛,基本達到了F5硬體裝置的60%效能,其他幾個10%都有點困難。      不過就因為LVS忒牛了,配置也最麻煩了,而且健康檢測需要另外配置Ldirector,其他HAPROXY和NGINX自

最新ThinkPHP V5在iisnginxapache下的安裝過程包含偽靜態引起的錯誤

本文適用於以下問題Apache出現No input file specified提示?PHPWAMP出現No input file specified提示?安裝網站程式出現No input file specified提示?Apache如何設定偽靜態,Nginx如何設定偽靜態

IIS 6.0/7.0/7.5NginxApache 等 Web Service 解析漏洞總結

[+]IIS 6.0 目錄解析:/xx.asp/xx.jpg  xx.jpg可替換為任意文字檔案(e.g. xx.txt),文字內容為後門程式碼 IIS6.0 會將 xx.jpg 解析為 asp 檔案。 字尾解析:/xx.asp;.jpg     /xx.asp:.jpg

物件序列化——java原生序列化Kryo序列化效能比較和Hessian序列化

什麼是序列化以特定的方式對類例項的瞬時狀態進行編碼儲存的一種操作,叫做物件序列化。就是將物件的這個時刻的各種屬性各種值按照一定的規則變成二進位制流,然後如果傳輸到別的jvm中,jvm可以按照規則在將二進位制流反序列化成對應的物件,並且物件裡面還有當時的資料和各種屬性。序列化的

15套java架構師集群高可用高可擴展高性能高並發性能優化Spring bootRedisActiveMQNginxMycatNettyJvm大型分布式項目實戰視頻教程

mycat 擴展 並發解決方案 入門到 -1 高端 資料 src nio * { font-family: "Microsoft YaHei" !important } h1 { background-color: #006; color: #FF0 } 15套java

java高級視頻課程DubboRedisActiveMQNginxMycatSpringMongoDBZeroMQGitNosqlJvmMecachedNettyNioMina

strong 程序設計 queue隊列 frp lin 海量數據 並發解決方案 elkstack line * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架構師、集群、

[原創]在Centos7.2上源碼安裝PHPNginxZentao禪道

session zip nss markdown src roo -perm mbstring 復制 版本 操作系統:CentOS Linux release 7.2.1511 (Core) PHP:5.6.33 Nginx:1.12.2 MySQL:5.6.38(192

小程序後臺配置 --- CentOS 7.3 64nginxnode.js

工作 數據 同時 本地 ane get 端口 域名解析 time 小程序後臺配置 目的 配置一個小程序後臺的開發、發布環境,同時保留頂級域名另作他用。 需求: 一個域名 一個主機 一個小程序賬號 系統和軟件 這裏使用CentOS 7.3 64位系統和nginx、node

三大主流軟件負載均衡器對比(LVSNginxHAproxy)

LVS、Nginx HAproxy LVS: 1. 抗負載能力強,性能高,能達到F5的60%,對內存和CPU資源消耗比較低 2. 工作在網絡4層,通過VRRP協議(僅作代理之用),具體的流量是由linux內核來處理,因此沒有流量的產生。 3. 穩定,可靠性高,自身有完美的熱備方案(K

Liunx 三大主流(LVSNginxHAproxy)負載均衡對比

三大負載 LVS HAproxy Nginx 均衡器 LVS: 1.抗負載能力強,性能高,能達到F5的60%,對內存和cpu資源消耗比較低 2.工作在網絡4層,通過VRRP協議(僅做代理使用),具體的流量是由liunx內核來處理,因此沒有流量的產生。 3.穩定,可