一夲道中文无码av免费看|无码中文字幕av免费放∨|欧美乱人伦视频中文字幕|亚洲日韩色欧另类欧欧美

  1. <li id="iw7nw"><th id="iw7nw"><pre id="iw7nw"></pre></th></li>
    <bdo id="iw7nw"></bdo>
  2. 首頁(yè) > 科技 > 互聯(lián)網(wǎng) > 正文

    為什么我們使用Nginx而不是Apache

    文章來(lái)源:IT經(jīng)理網(wǎng)
    字體:
    發(fā)布時(shí)間:2016-09-06 14:35:36

    nginx vs apache

    我們大多數(shù)的客戶在他們的服務(wù)器上使用Apache作為Web服務(wù)器,尤其是部署在一個(gè)基于PHP系統(tǒng)的前端并且使用mod-PHP。鑒于擴(kuò)張性和性能方面的原因,我們通常會(huì)建議他們改用Nginx和FPM。

    Apache是非常強(qiáng)大的Web服務(wù)器,模塊化結(jié)構(gòu),也是Web服務(wù)端的鼻祖。除了捆綁一些其他的工具外,Apache已經(jīng)成為了世上最廣泛部署的開(kāi)源系統(tǒng),直到最近,世界上大多數(shù)網(wǎng)站仍運(yùn)行著Apache系統(tǒng)。

    但是,Apache并不是完美的,并且不再適合大規(guī)模系統(tǒng)。為什么?因?yàn)樗倪M(jìn)程模式雖然簡(jiǎn)單而靈活,但并不適合大規(guī)模尤其是當(dāng)要處理像PHP這種需要占用大量?jī)?nèi)存應(yīng)用程序代碼時(shí)。

    一個(gè)典型的網(wǎng)絡(luò)應(yīng)用服務(wù)器由兩部分組成?蛻舳诉B接部分負(fù)責(zé)用戶瀏覽器與HTTP連接,保持長(zhǎng)時(shí)間的TCP/IP協(xié)議,通常是1到2分鐘。對(duì)于一個(gè)大型的系統(tǒng),服務(wù)器可能要同時(shí)承擔(dān)和處理數(shù)以萬(wàn)計(jì)的并發(fā)連接。

    這直接與Apache只有500條進(jìn)程即500個(gè)HTTP連接的處理能力上限相沖突。而現(xiàn)今的瀏覽器讓這個(gè)問(wèn)題更加嚴(yán)重, 因?yàn)楝F(xiàn)在的瀏覽器平均每個(gè)主機(jī)會(huì)打開(kāi)六個(gè)網(wǎng)站鏈接(幾年前是兩個(gè)網(wǎng)站鏈接)。所以當(dāng)超過(guò)100個(gè)用戶同時(shí)訪問(wèn)時(shí),Apache就已經(jīng)滿負(fù)荷了。

    第二部分是應(yīng)用程序處理部分,這部分承擔(dān)了代碼運(yùn)算。在大多數(shù)系統(tǒng)中,這部分工作是最消耗RAM和CPU資源的,因此進(jìn)程數(shù)量必須被嚴(yán)格限制,通常是大約每 1GB的內(nèi)存10個(gè)進(jìn)程,或者每個(gè)CPU核心兩個(gè)進(jìn)程。因此一臺(tái)4GB RAM、16內(nèi)核的服務(wù)器最多只能運(yùn)行32個(gè)應(yīng)用程序進(jìn)程。

    但是,問(wèn)題的關(guān)鍵是,Apache直接連接前端客戶端通訊組件與后端應(yīng)用程序進(jìn)程組件。如此一來(lái),前端部分往往保持長(zhǎng)時(shí)間的連接,常常達(dá)到幾分鐘,這導(dǎo)致后端部分將持續(xù)消耗內(nèi)存和CPU資源。目前還沒(méi)有直接的方法能夠在大型系統(tǒng)中找到前后端服務(wù)的平衡,因此他們必須被分離開(kāi)來(lái)。

    目前有兩個(gè)主要的解決方法。第一個(gè)方法,也是現(xiàn)有系統(tǒng)上最容易的方法,就是在Apache前端安裝負(fù)載均衡服務(wù)器或者Nginx來(lái)處理客戶端連接部分。負(fù)載均衡服務(wù)器,像 HAProxy或者Nginx能輕松處理成千上萬(wàn)條并發(fā)的連接,并使Apache能夠真正的僅作為后端應(yīng)用程序工作,來(lái)處理32個(gè)或是更多的進(jìn)程。

    第二種方案,也是最通用的辦法就是用Nginx替換Apache,同時(shí)使用PHP-PFM作為應(yīng)用服務(wù)器。就像之前所提到的,這將分割前端客戶端通信部分和后端應(yīng)用程序部分。Nginx處理HTTP通訊協(xié)議,同時(shí)FPM處理后端應(yīng)用程序部分,和那32個(gè)進(jìn)程進(jìn)行交互。

    然而這幾種方法仍然還存在一些問(wèn)題,主要是如何加載服務(wù)器的RPC調(diào)用,以及如何釋放已經(jīng)完成的RPC調(diào)用。 這兩個(gè)問(wèn)題都會(huì)在后繼的博客中加以詳解。

    另外,只使用Nginx的解決方法會(huì)給那些嚴(yán)重依賴于Apache功能的應(yīng)用程序帶來(lái)問(wèn)題,尤其是特別依賴rewrite rules, .htaccess, 或者mod_security等一些可選組件的應(yīng)用程序。在這種情況下,在Apache前端增加安裝Nginx是最好的方法。

    通常來(lái)說(shuō),所有新的系統(tǒng)都應(yīng)該使用Nginx和PHP-FPM來(lái)部署。這能提供高性能增長(zhǎng)特性,并且是平衡用戶和內(nèi)存,CPU資源的最佳選擇。已存在的系統(tǒng)可以在前端使用Nginx或者HAProxy以達(dá)到同樣的效果,以便在當(dāng)今現(xiàn)代網(wǎng)絡(luò)環(huán)境中為用戶提供更優(yōu)質(zhì)的服務(wù)。

    發(fā)表評(píng)論 共有條評(píng)論
    用戶名: 密碼:
    驗(yàn)證碼: 匿名發(fā)表