大话2免费版一级星盘炼化表

    1. <form id=zhudObCNh><nobr id=zhudObCNh></nobr></form>
      <address id=zhudObCNh><nobr id=zhudObCNh><nobr id=zhudObCNh></nobr></nobr></address>

      WEB服务器如何选择 Apache or Nginx?

      原創

      Web服務器是直接影響網站性能的關鍵因素,也是每個站長選擇網站運營環境時必然考慮的問題。目前 Web服务器市场産品众多,最为主流和代表性的当属 ApacheNginx以及微軟的 IIS。本文目的是通過 ApacheNginx進行對比,從而幫助廣大用戶們能夠選擇適合自己的 Web服務器。

      一、簡介

      Apache

      Apache創建于 1995年,並從 1999 年開始在 Apache 軟件基金會旗下進行開發。 Apache靈活、高效,擁有豐富的擴展模塊,以及活躍的社區支持,成爲目前世界上最爲主流的開源免費的 Web服務器軟件。

      Nginx

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

      下面是2017年9月11日更新的最新web服務器市場份額對比圖:


      數據來源: https://news.netcraft.com/archives/2017/09/11/september-2017-web-server-survey.html

      二、對比

      雖然 ApacheNginx各自的背景不同,但他們的作用目的是一致的,簡單說就是接收用戶請求,然後處理請求,最後將處理結果返回給用戶。

      1. 鏈接處理

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


      Apache提供了三種多重處理模塊: mpm_preforkmpm_workermpm_envent,下面我們做簡要說明對比。

      mpm_prefork 模塊産生衆多子進程,每個子進程是單線程的,每個線程鏈接一個請求,如此一對一的關系。所以如果請求數大于進程數時,服務器的性能就表現得差強人意了。


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


      mpm_event 该模块與 worker相似,區別在于 event可以處理長連接 (keep-alive ),以避免線程被請求長期占用而造成資源浪費,同時也增強了高並發場景下的請求處理能力。


      Apache不同, Nginx是通過異步的、非阻塞的、事件驅動的方式在實現的。 Nginx的工作進程是單線程的,每個線程可以異步的處理大量的用戶請求。下面是 Nginx的工作原理圖:

      圖片來源: http://www.aosabook.org/en/nginx.html

      2. 静态與動態内容的处理

      无论是静态还是動態内容, Apache都可以處理, Apache具有内置的解析和执行各种動態脚本语言(包括 PHPPythonPerl)的功能,無需借助外部處理器。

      毫无疑问,動態内容处理恐怕是 Nginx的痛點。 Nginx处理動態内容的效率并不高 ,且需借助外部的处理器。所以如果您的站点具有很多動態功能, Apache的表现可能会更切合你意。不过雖然與 Apache相比 Nginx的動態内容处理能力不佳,但其静态内容处理还是很高效的。

      三、總結

      Apache 擁有豐富的模塊組件支持,穩定性強, BUG 少,動態内容处理强。

      Nginx 輕量級,占用資源少,負載均衡,高並發處理強,靜態內容處理高效。


      存在即有道理, ApacheNginx作爲 WEB服务各有所长,个人认为二者并不存在将来谁会完全替代谁。关键在于用户要认真考虑清楚自己的应用场景,根据自己的需求和情况来斟酌选择哪个産品,适合自己的才是最好的。

      lamp
      HoME大话2免费版一级星盘炼化表