做爲 Web 服務器:相比 Apache,Nginx 使用更少的資源,支持更多的併發鏈接,體現更高的效率html
Nginx 靜態處理性能比 Apache 高 3倍以上 前端
最核心的區別在於apache是同步多進程模型,一個鏈接對應一個進程;nginx是異步的,多個鏈接(萬級別)能夠對應一個進程nginx
nginx的負載能力比apache高,能抗併發apache
nginx處理動態請求是雞肋,通常動態請求要apache去作,nginx只適合靜態和反向後端
Apache在處理動態有優點,Nginx併發性比較好,CPU內存佔用低,若是rewrite頻繁,那仍是Apache吧瀏覽器
一個典型的網絡應用服務器由兩部分組成,客戶端鏈接部分負責用戶瀏覽器與http鏈接,一般保持1-2分鐘的tcp/ip協議,服務器可嫩要同時承擔和處理數以萬計的併發鏈接,這直接與Apache只有500條進程,即500個http鏈接的處理能力上限相沖突,因此有100個用戶同時訪問,而且平均每一個人打開六個網絡鏈接時,Apache就已經滿負荷了!!服務器
第二部分是應用程序處理部分,這部分承擔了代碼運算。在大多數系統中,這部分工做是最消耗RAM和CPU資源的,所以進程數量必須被嚴格限制,一般是大約每 1GB的內存10個進程,或者每一個CPU核心兩個進程。所以一臺4GB RAM、16內核的服務器最多隻能運行32個應用程序進程。可是,問題的關鍵是,Apache直接鏈接前端客戶端通信組件與後端應用程序進程組件。如此一來,前端部分每每保持長時間的鏈接,經常達到幾分鐘,這致使後端部分將持續消耗內存和CPU資源。網絡
Apache是很是強大的Web服務器,模塊化結構,也是Web服務端的鼻祖。世界上大多數網站仍運行着Apache系統。可是,Apache並非完美的,而且再也不適合大規模系統。爲何?由於他的進程模式雖然簡單而靈活,但並不適合大規模尤爲是當要處理像PHP這種須要佔用大量內存應用程序代碼時。併發
咱們大多數的客戶在他們的服務器上使用Apache做爲Web服務器,尤爲是部署在一個基於PHP系統的前端而且使用mod-PHP。鑑於擴張性和性能方面的緣由,咱們一般會建議他們改用Nginx和FPM。異步
Apache是很是強大的Web服務器,模塊化結構,也是Web服務端的鼻祖。除了捆綁一些其餘的工具外,Apache已經成爲了世上最普遍部署的開源系統,直到最近,世界上大多數網站仍運行着Apache系統。
可是,Apache並非完美的,而且再也不適合大規模系統。爲何?由於他的進程模式雖然簡單而靈活,但並不適合大規模尤爲是當要處理像PHP這種須要佔用大量內存應用程序代碼時。
一個典型的網絡應用服務器由兩部分組成。客戶端鏈接部分負責用戶瀏覽器與HTTP鏈接,保持長時間的TCP/IP協議,一般是1到2分鐘。對於一個大型的系統,服務器可能要同時承擔和處理數以萬計的併發鏈接。
這直接與Apache只有500條進程即500個HTTP鏈接的處理能力上限相沖突。而現今的瀏覽器讓這個問題更加嚴重, 由於如今的瀏覽器平均每一個主機會打開六個網站連接(幾年前是兩個網站連接)。因此當超過100個用戶同時訪問時,Apache就已經滿負荷了。