看到一篇文章說apache最大承受並發數是三四千個,nginx是他的十倍,但是nginx的是基於緩衝等的實現,apache是實實在在的三四千個
回複內容:
看到一篇文章說apache最大承受並發數是三四千個,nginx是他的十倍,但是nginx的是基於緩衝等的實現,apache是實實在在的三四千個
不知道樓主所謂的實實在在指什麼,並發數、請求數、pv是不一樣的,單機apache並發數不可能達到34千,nginx也不能一概而論,說並發數是apache的十倍,nginx只是充當Proxy 伺服器的角色,真正處理php指令碼的是php-fpm,如果非要分一個好壞,nginx處理靜態檔案的能力要勝於與apache,apache畢竟是老牌的web伺服器相比之下穩定性高一些,還有就是記憶體的佔用、cpu的開銷這些都是要考慮的因素。
基本沒必要糾結這個,你先做到再說吧!
一般業務大家都使用nginx了.這個是標配,主要是為了以後擴充架構以提高訪問量方便.另外說apache穩定nginx不穩定實在是無從說起,沒這事兒.
正常情況下php業務瓶頸都在資料庫上面,至於php這邊用什麼都隨意了.
除非業務過於變態,或者本身程式寫的有問題,否則根本遇不到瓶頸.
能做到並發三四千,你自然有人有辦法解決.真到那天,你並發個幾萬都有解決方案.
Linux上Nginx跟PHP-FPM的組合很好.Nginx輕量,穩定,高效,跟PHP-FPM通過FastCGI進行網路通訊,松耦合.
Nginx負責處理所有的靜態資源,PHP-FPM則專心執行PHP指令碼,一個PHP-FPM被阻塞並不會導致Nginx被阻塞.一個PHP-FPM進程崩潰,PHP-FPM的主進程會自動重啟一個背景工作處理序,Nginx則可以配置fastcgi_next_upstream實現容錯移轉,切換到upstream中的另一套PHP-FPM服務.
PHP-FPM可以配置監聽不同連接埠的pool,不同的pool裡的背景工作處理序是互不影響的,可以把PHP-FPM不同的pool放到Nginx的upstream叢集.
Nginx從1.7.11加入了AIO線程池,能夠使用多線程讀取和傳送檔案,以免工人進程被阻塞.對於經過PHP認證身份後輸出的附件,PHP可以通過X-Accel-Redirect告訴Nginx檔案的路徑,讓Nginx利用它的AIO線程池讀取檔案並發送給瀏覽器,以免阻塞PHP進程.
header("X-Accel-Redirect: $filePath");
//對比下面直接通過PHP輸出檔案(PHP進程會被阻塞)
//readfile($filePath);
NGINX 1.9.1啟用reuseport完美解決驚群後,每秒處理的請求數提升了2到3倍,同時降低了延遲和stdev指標.
http://nginx.com/blog/socket-sharding-nginx-release-1-9-1/
比如你要開100個PHP背景工作處理序:
1.使用Apache + MOD_PHP則需要開啟100個httpd背景工作處理序,每個httpd背景工作處理序提供HTTP服務和PHP解析服務.
2.使用Nginx + PHP-FPM則可以開啟4個Nginx背景工作處理序(假設你的CPU核心數為4),和100個PHP-FPM進程,總共104個進程,但值得注意的是,100個PHP-FPM進程佔用的記憶體肯定要比100個httpd進程少,因為PHP-FPM不提供HTTP服務,也就是說Nginx + PHP-FPM比Apache + MOD_PHP能夠節省94套HTTP服務佔用的記憶體.
3.使用Nginx + Apache + MOD_PHP則是最耗記憶體的組合.
就簡單易用來說,中小網站直接部署Apache(prefork MPM)+MOD_PHP這種經典的組合也不錯.另外請注意,PHP官方不推薦在Linux上使用event這個線程化的Apache MPM來搭配MOD_PHP運行,詳情請看:
http://www.php.net/manual/zh/faq.installation.php#faq.installation.apa...
我推薦 nginx.
nginx 配置相當靈活,說實話,自從用了 nginx, apache 我就沒用過了.
我們公司用的也是 nginx .
首先nginx不處理php動態網頁面,說它高並發NB,是指處理靜態頁面。nginx要處理真正的php請求,還需要一樣東西:fastcgi,它是另外的一個服務,nginx遇到php都會轉給它來處理。其次,apache可以通過mod得形式來把php載入到自身系統中,所以無論是靜態頁面還是php都是自己處理的。當然啦,apache也可以像nginx那樣通過fastcgi來處理php請求,而且很多公司就是這麼乾的,這樣的話並發量和nginx不相上下。至於apache使用mod還是fastcgi形式,取決於你自身業務的特點。靜態還是動態,高穩定還是高並發。處理動態內容的瓶頸不是在apache或nginx上,是在php解譯器上。想追求高並發,就去做伺服器叢集吧,這是最實在的。
如果是網站的話,為什麼不在Nginx和Apache之上加一個Varnish呢?
還有,Nginx的十倍應該說的是靜態頁面。如果是動態話,兩者應該相差不多。
趨勢是使用nginx,我呆過的幾個公司都從apache轉nginx了
目前我們用的是LANMP,Nginx + Apache,前端用Nginx,PHP指令碼反向 Proxy給Apache去處理!
nginx是反向 Proxy的,而apache不是,apache 比nginx穩定,還是建議使用apache.