寫教學的最大目的是教會未來的自己

網站效能優化經驗談-apache VS nginx

經過多天的裝死,終於要寫第二篇了

 

因為我主要是用php撰寫網站的,所以在網頁伺服器軟體的選擇,基本上就是這兩款在比較了(如果還有其他更好的麻煩跟我說)

在好幾年前我曾經轉貼了一篇相關的比較文,這次我來寫一下我實作後的感想

 

首先 這兩套軟體是完全不同的軟體,各有優缺點,如何選擇就看各位了

因為這篇是要寫效能優化,所以先比較這部分好了

在相同硬體規格、php、MYSQL下,nginx的效能遠大於apache,在四年前我的測試結果,nginx可以大概可以提升30%的效能,這不是說網站可以加速30%,而是網站的壓力承受量可以提高30%,

另外在過大壓力下,apache 會直接進入死當狀態,難以復原,而這部分nginx則是毫無問題,在壓力過後nignx回自動復原,不需要任何重新啟動。

 

先介紹一下nginx的(我理解的)運作原理,nginx本體十分類似一個任務分派器,nginx本身也不會做任何網頁上的運算,而是在把收到的所有request依照順序快速的分配工作出去,所以在設定上你可以設定nginx有幾個thread,php的部分也是,和nignx搭配的是php-fpm,php-fpm 是可以設定同時有多少個thread運作,當nignx 收到工作後,會把php的部分丟給有空閒的php-fpm處理,當php沒有在時間內處理玩,nginx就會回傳錯誤給使用者,同樣的如果php-fpm任務滿載,也同樣會回傳錯誤給使用者,所以當server超負荷的時後,也只是php-fpm 超出複載,但nginx沒事,這時後只需要把php卡住的部分清掉 就恢復正常了。

 

最後在介紹一下nginx的優缺點

優點:

  1. 高度自由性,設定檔跟寫程式一樣,想怎麼改隨你
  2. 因為是任務分配器,所以可以同時當proxy、tomcat、php server都沒問題

缺點

  1. 因為高度自由性,所以要自己找資料,許多問題的教學文章會只放apache 漏了nginx

 

今天就寫到這吧我累了

 

 

Post to Twitter Post to Plurk Post to Facebook Send Gmail

發表迴響

Copyright © 2019. All Rights Reserved.