Nginx 和 Apache 在Linux 下的效能表現誰更好?

來源:互聯網
上載者:User

回複內容:

這樣的對比確實是不科學的。 我們不能僅僅因為兩者做了相似的事情(Web Server)就認為以此結果做判斷。 我個人對『匿名使用者』貼連結貼圖的說明表示並不贊同。
另外,同樣反對聖戰。 我們做技術的,應理智的堅持瞭解實現細節而非片面的從結果去看待產品。 問題修改為『在 Linux 下,Nginx 是不是在一般要比 Apache 效能更好?為什嗎?』會更客觀一些。

對比一下:
  1. Nginx 在靜態檔案效能上略強於 Apache,主要得益於其非同步 IO 模型。
  2. Nginx 在並發能力上限這點上遠超prefork 的 Apache,但如果 Apache 開啟 MPM,兩者的差距就不太明顯了,核心關鍵點在於 Apache 作為老牌 Web Server ,有沉重的曆史包袱,預設採用 select 模型而非僅只在2.6核心上才能支援的 epoll。 Multi Processing + Multi threading是另外一個原因,降低了prefork 模式下 fork 過多的進程耗光控制代碼或記憶體的可能。
  3. 在記憶體佔用方面,Apache 預設啟動了更多的模組,對各類 RFC 遵循得更為標準,因此確實也比 Nginx 略大,但最佳化過後差距並不是特別明顯。
  4. 在 CPU 佔用方面,Web Server 其實都不是 CPU 密集型,Apache 再次背負一個包袱就是 PHP、Perl甚至是新的一些語言的支援預設都是以模組的形式支援甚至是更低效的 CGI 1.0/1.1技術,而非是以 FastCGI 的方式執行。 Nginx 則捨棄了這些,使得所有語言都只能以 FastCGI 等非同步機制執行。
    因此,預設下的 Apache 可能會佔用較多的 CPU,進而使得同一 Web Server 下的其他如反向 Proxy、靜態檔案訪問等都出現問題。 更糟糕的是可能會導致進一步的 fork,佔用更多的控制代碼、資料庫連接等。
    但請知曉,Apache 也是支援 FastCGI 的。

Nginx 的迅速崛起,真實的原因是『非同步』這一方式才是解決大流量高並發的關鍵點。 另外,摩爾定律的失效後,CPU 的發展趨勢就是多核心,而非同步正是充分發揮多核心效能的最重要手段。
此外,從營運成本上來說,一個安裝完後需要大量修改配置,和另一個安裝完後只需要加上自己的特殊配置的方案,普遍意義上的使用者們用腳投票,自然是後者更友善一些。

兩個 Web Server 我都很喜歡。從我做起,不參與,不發起,任何類型的聖戰。

懂的自然懂。都是 HTTP 伺服器 / 反向 Proxy伺服器,怎麼就叫“作的事情都不一樣”了?
跑小檔案算是 nginx 欺負人,看反向 Proxy php-fpm 好了
http://blog.celingest.com/en/2013/02/25/nginx-vs-apache-in-aws/
很明顯可以看出,在傻大粗笨的階段 Apache 相當能幹,因為它可以無盡得開線程 / 進程去槍戰系統資源;當你認真要做一個足夠高效的系統,Apache 很快會成為瓶頸。
現在一般都傾向於 Nginx 了吧。根本就不是同一層面的問題,他們做的事情都不一樣,你想比較什嗎?
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.