2013-04-06 77 views
0

我需要一些幫助。目前,我有以下的包:高流量協助優化服務器

2048 MB 80GB RAID 10磁盤空間 4X CPU優先 5000 GB的帶寬 CentOS的

(VPS-4) http://www.knownhost.com/vps_packages.html

我的VPS已經接收大量的流量。它有一天有100萬的頁面瀏覽量,甚至!

儘管很酷,但自從命中率大幅上升以來,我們一直受到困擾。

我們最初使用的是SuPHP,這是資源密集型的。服務器每隔幾天就會關閉,我們會收到有關過度運行的自動電子郵件。

然後,我們切換到FastCGI。這一直運行良好,我們停止收到這些電子郵件。但是,在高峯時段,如果有很多人連接,那麼網頁將無法顯示。您將不得不刷新頁面幾次才能顯示(聽起來好像所有連接插槽都被阻止)。

我們目前在此服務器上使用NGINX + Apache w/CPANEL + eAccelerator + FastCGI。

忽略當前的設置配置並記住我們正在使用的硬件,你們是否有任何建議的配置可能最適合支持所有這些命中?

請記住,大量的命中發生一個頁面(不要問!)。該頁幾乎沒有任何PHP(但部分動態,所以需要PHP),甚至不連接到數據庫。

非常感謝。

+0

聲音就像連接一樣,直到線程變得可用。也許這個答案可以幫助http://serverfault.com/questions/191251/apache-maximum-number-of-threads – Bart 2013-04-06 20:58:27

回答

1

在整個過程中,我將修改nginx配置。 Apache可以保持原樣。

步驟1:部署gzip壓縮

該步驟是相當簡單的 - 用gzip壓縮輸出。

gzip    on; 
gzip_min_length 1000; 
gzip_proxied  expired no-cache no-store private auth; 
gzip_types  text/plain application/xml application/json; 

所有這將要做的就是啓用gzip壓縮:text/html的(默認),應用/ XML的應用程序/ JSON和文本/平原。順便說一下,我假設你正在從CDN提供圖片。如果不是,那麼也爲他們啓用。

這應該會看到您已使用帶寬的下降,但會略微降低CPU成本。但是,CPU幾乎不是瓶頸 - 通常是帶寬和磁盤I/O,尤其是在靜態網站上,所以我們將繼續努力。

步驟2(可選):刪除阿帕奇如果你能

如果你只是提供靜態內容,nginx的本身是值得擁有的。如果您已經使用fastCGI,請考慮PHP-FPM,它允許您縮短Apache的內存管理器。

步驟3:通過頭

緩存這將迫使nginx的服務的所有網頁的本地緩存的版本降低帶寬使用。非常酷的東西,因爲它會完全阻止客戶重新下載他們已有的東西。

expires  24h; 
add_header Cache-Control public; 

這一步也將有一場突發的優勢:Apache將獲得較少的查詢。

步驟4:在內存中的頁面緩存

這一步將你的頁面了磁盤I/O和內存。如果你有一個靜態頁面,你應該看到這樣做的重大收益。 this question對此有很多。覆蓋它需要很長的時間。

這將有兩個優點:

  • nginx的會更頻繁地從內存中加載,而不是查詢阿帕奇,在輕負載減輕的Apache
  • 的Apache本身,由於這一點,就會從磁盤讀取和叉工較少

一旦完成了這一切,您應該看到負載減少,可能足以降低Apache上的工作人員數量。

+0

謝謝你的一切!我會給它一個鏡頭。雖然獲得大部分流量的網站確實有一些PHP,所以它不是100%靜態的。不知道緩存是否會對此有所幫助。 – Mike 2013-04-06 21:20:41

+0

@Mike:只有在您知道PHP腳本詳細說明的情況下,才能回答此問題。順便說一下,這是我爲客戶提供的專業服務 - 分析和高效緩存。客戶端通過頭文件進行強制緩存,但也有很多人忘記了:你可以使用諸如** memcached **之類的工具進行應用內緩存,並且nginx也支持它,以減輕重複計算數據,例如。 – 2013-04-06 21:22:52

+0

PHP腳本只輸出一些隨機消息(由於人們可以在JS文件中查看所有消息,因此無法使用JavaScript來完成)。我們以這種方式設置消息,以便根據百分比顯示消息。即消息#1顯示1%的時間。消息#2可以顯示30%的時間,等等。真的很簡單,但不幸的是,我們沒有一種合法的方式來不使用PHP。這有點像隱藏的促銷代碼,但偶爾會出現。 – Mike 2013-04-06 21:32:40