2008-09-22 55 views
16

我們正在爲客戶(一次)預計在第一天獲得相當數量的流量的客戶的網站上工作。有新聞稿,人們正在寫博客等等。我有點擔心,我們會在第一天面對我們的臉。你會看到什麼主要的事情來確保(事先沒有真實的流量數據),你可以在大規模推出後保持站立狀態。承受發佈日流量爆發的最佳做法

詳細信息:這是一個L/A/M/PHP堆棧,使用內部開發的MVC框架。目前正在一臺服務器上啓動,Apache和MySQL都在其上,但如果需要的話,我們可以將其分解。我們已經安裝了memcached,並儘可能多地執行PHP級別的緩存。有些頁面是查詢密集型的,我們使用Smarty作爲模板引擎。請記住,沒有時間來改變這些主要方面 - 這只是設置。我們應該注意什麼樣的事情?

回答

1

要準備或處理尖峯(或峯值)性能,我首先要確定您是否準備好通過一些類似jmeter之類的簡單性能測試。

它很容易設置和開始,並會給你早期的指標,你是否會處理預期的峯值負載。

但是,考慮到您的時間限制,其他步驟將是準備將吸引最高關注度的內容的靜態版本(如新聞發佈,如果您的發佈日)。同時確保您充分利用客戶端緩存(對您的服務器減少1個請求可以發揮重要作用)。網頁已經設計用於極高的可擴展性和有效的使用內容緩存,是您在這些情況下最好的朋友。

關於software engineering radio on the design of the new Guardian website,當事情平靜下來時,有一個很好的可擴展性播客。

發射好運

9

先測量,然後優化。你做過任何負載測試嗎?瓶頸在哪裏?

一旦你知道了瓶頸,那麼你可以智能地決定是否需要額外的數據庫框或網絡盒,現在你只是猜測。

此外,您的負載測試結果與您的預期流量比較如何?你能處理2倍的預期流量嗎? 5倍?如何輕鬆/快速地獲得&版本的額外硬件?我確信業務要求在啓動時不會失敗,因此請確保您有足夠的空間容量,您可以隨時在負載穩定後釋放它,並且您知道您需要什麼。

1

我最好,就個人而言,做某種負載均衡器/數據庫複製系統的放了幾件事情

1)

這意味着,你可以在多臺服務器服務傳播。不能永久擁有多臺服務器?使用亞馬遜E3 - 這是很好的投入到位這樣的事情(開關幾個服務器來處理負載)

2)的代碼,在一些「高負荷」限制

例如,如果你搜索效率低下 - 當負載達到一定水平時將其關閉。「對不起,我們很忙,請稍後再嘗試搜索」

3)加載測試...使用類似ApacheBench的東西來壓力測試您的服務器。

4)我個人認爲,切換「Keep-Alive」連接關閉效果更好。它可能會稍微降低整體性能,但是 - 這意味着不是有一些地方讓網站能夠對某些人而言,和其他人得到超時,每個人都得到一致的服務,如果它得到這一水平

Linux的格式做一篇關於「如何克服困難」的好文章......我發現過去有用。它是available online as a PDF

3

我會至少分解出所有的靜態內容。在其他地方安裝另一個虛擬主機,並將所有圖形/ css/js加載到其上。您可以購買一些額外的週期卸載該類型的內容的服務。如果您真的擔心您可以註冊並使用內容分發服務。現在有很多類似Akamai的很便宜的。

另一個想法可能是利用apache mod_proxy在特定的時間內保持生成的頁面輸出。 APC也將非常有用。您可以使用輸出緩衝捕獲+頁面上相關數據的上次修改時間,並使用APC緩存版本。如果該頁面無效,則重新生成並再次存儲在APC中。

祝你好運,這將是一次學習體驗!

2

有一段測試期,您可以在儘可能多的用戶中進行測試,測量您網站的性能,並在上線前找出錯誤。

您可以在私人測試版或Google風格的半公開測試版中明確控制用戶數量,其中每個用戶都有一些可以提供給他們的朋友的推薦人數。

0

看看使用Varnish - 這是一個緩存反向代理服務器(如魷魚,但更單一的目的)。我已經運行了一些相當大的網站,它似乎工作得很好。

1

基本的第一步,以加強您的網站高流量。

1)使用像https://browsermob.com/這樣的低成本工具來加載測試您的網站。至少你應該看到每小時10萬獨立訪問者。如果您從MSN首頁獲得廣告,則每小時可以處理500K個獨特廣告。

2)將所有靜態圖形/視頻內容移動到CDN。 Edgecast和亞馬遜是兩個很好的選擇。

3)使用Jet Profiler來分析您的MySQL服務器以分析任何性能低下的查詢。微小的變化會帶來巨大的好處。

+1

在昂貴的CDN上購買空間之前先測量。你可能會也可能不需要它,即使你得到它,你可能會錯誤地使用它。測量! – 2010-08-29 01:35:03