當(dāng)前位置:首頁 >  站長(zhǎng) >  建站經(jīng)驗(yàn) >  正文

WEB服務(wù)器如何選擇 Apache or Nginx?

 2017-12-27 13:48  來源: 網(wǎng)站建設(shè)運(yùn)維百科   我來投稿 撤稿糾錯(cuò)

  域名預(yù)訂/競(jìng)價(jià),好“米”不錯(cuò)過

Web服務(wù)器是直接影響網(wǎng)站性能的關(guān)鍵因素,也是每個(gè)站長(zhǎng)選擇網(wǎng)站運(yùn)營(yíng)環(huán)境時(shí)必然考慮的問題。目前Web服務(wù)器市場(chǎng)產(chǎn)品眾多,最為主流和代表性的當(dāng)屬Apache、Nginx以及微軟的IIS。本文目的是通過Apache和Nginx進(jìn)行對(duì)比,從而幫助廣大用戶們能夠選擇適合自己的Web服務(wù)器。

1.簡(jiǎn)介

Apache:

Apache創(chuàng)建于1995年,并從 1999 年開始在 Apache 軟件基金會(huì)旗下進(jìn)行開發(fā)。Apache靈活、高效,擁有豐富的擴(kuò)展模塊,以及活躍的社區(qū)支持,成為目前世界上最為主流的開源免費(fèi)的Web服務(wù)器軟件。

Nginx:

Nginx是由俄羅斯軟件工程師Igor Sysoev編寫的免費(fèi)開源Web服務(wù)器。自從2004年上市以來,nginx專注于高性能,高并發(fā)性和低內(nèi)存使用。并且其在負(fù)載均衡,緩存,訪問和帶寬控制以及與各種應(yīng)用程序高效集成等方面的特性,都使得它逐步深受廣大用戶青睞。

下面是2017年11月份更新的web服務(wù)器市場(chǎng)份額對(duì)比圖:

數(shù)據(jù)來源:

2.對(duì)比

雖然Apache和Nginx各自的背景不同,但他們的作用目的是一致的,簡(jiǎn)單說就是接收用戶請(qǐng)求,然后處理請(qǐng)求,最后將處理結(jié)果返回給用戶。

01.鏈接處理

Apache和Nginx最大的不同在于它們對(duì)連接的處理方式。Apache提供一系列多重處理模塊,通過這些多重處理模塊來使用操作系統(tǒng)的資源,對(duì)進(jìn)程和線程池進(jìn)行管理,控制處理用戶請(qǐng)求。

Apache提供了三種多重處理模塊:mpm_prefork、mpm_worker、mpm_envent,下面我們做簡(jiǎn)要說明對(duì)比。

mpm_prefork:模塊產(chǎn)生眾多子進(jìn)程,每個(gè)子進(jìn)程是單線程的,每個(gè)線程鏈接一個(gè)請(qǐng)求,如此一對(duì)一的關(guān)系。所以如果請(qǐng)求數(shù)大于進(jìn)程數(shù)時(shí),服務(wù)器的性能就表現(xiàn)得差強(qiáng)人意了。

mpm_worker:與prefork不同,worker中子進(jìn)程是多線程的,每個(gè)線程管理一個(gè)用戶連接。線程數(shù)要多于進(jìn)程數(shù)量,這也就意味著新的連接能立刻得到一個(gè)空閑的線程,而不用等待進(jìn)程空閑。

mpm_event:該模塊與worker相似,區(qū)別在于event可以處理長(zhǎng)連接(keep-alive),以避免線程被請(qǐng)求長(zhǎng)期占用而造成資源浪費(fèi),同時(shí)也增強(qiáng)了高并發(fā)場(chǎng)景下的請(qǐng)求處理能力。

與Apache不同,Nginx是通過異步的、非阻塞的、事件驅(qū)動(dòng)的方式在實(shí)現(xiàn)的。Nginx的工作進(jìn)程是單線程的,每個(gè)線程可以異步的處理大量的用戶請(qǐng)求。下面是Nginx的工作原理圖:

圖片來源:

02.靜態(tài)與動(dòng)態(tài)內(nèi)容的處理

無論是靜態(tài)還是動(dòng)態(tài)內(nèi)容,Apache都可以處理,Apache具有內(nèi)置的解析和執(zhí)行各種動(dòng)態(tài)腳本語言(包括PHP,Python和Perl)的功能,無需借助外部處理器。

毫無疑問,動(dòng)態(tài)內(nèi)容處理恐怕是Nginx的痛點(diǎn)。Nginx處理動(dòng)態(tài)內(nèi)容的效率并不高,且需借助外部的處理器。所以如果您的站點(diǎn)具有很多動(dòng)態(tài)功能,Apache的表現(xiàn)可能會(huì)更切合你意。不過雖然與Apache相比Nginx的動(dòng)態(tài)內(nèi)容處理能力不佳,但其靜態(tài)內(nèi)容處理還是很高效的。

3.總結(jié)

Apache擁有豐富的模塊組件支持,穩(wěn)定性強(qiáng),BUG少,動(dòng)態(tài)內(nèi)容處理強(qiáng)。

Nginx輕量級(jí),占用資源少,負(fù)載均衡,高并發(fā)處理強(qiáng),靜態(tài)內(nèi)容處理高效。

存在即有道理,Apache和Nginx作為WEB服務(wù)各有所長(zhǎng),個(gè)人認(rèn)為二者并不存在將來誰會(huì)完全替代誰。關(guān)鍵在于用戶要認(rèn)真考慮清楚自己的應(yīng)用場(chǎng)景,根據(jù)自己的需求和情況來斟酌選擇哪個(gè)產(chǎn)品,適合自己的才是最好的。

申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

相關(guān)標(biāo)簽
web服務(wù)器

相關(guān)文章

熱門排行

信息推薦