2010-04-26 29 views
4

假設您有一個Web應用程序,沒有特定的堆棧(Java/.NET/LAMP/Django/Rails,都很好)。如何決定部署Web應用程序的硬件

您將如何決定部署它的硬件?確定需要多少臺機器時,有哪些經驗法則?

您將如何制定參數,如併發用戶,同時連接,每日點擊率和數據庫讀/寫比率來決定您需要多少硬件以及哪種硬件?

在這個問題上的任何資源將是非常有益...

具體 - 從現實世界的經驗和案例研究任何確鑿的數據將是巨大的。

回答

3

容量規劃是一個相當細緻和廣泛的區域。您需要接受一個迭代模型,其中包含「理論基線>負載測試>調整優化」方法。

理論

的第一步是對業務需求作出決定:有多少用戶預計高峯使用?請記住 - 這些數字通常不準確。

作爲一個例子,我們假設所有的高峯流量(在最壞的情況下)都會超過4小時。因此,如果網站每天預計100K次點擊,我們不會在24小時內分割,而是超過4小時。所以我的網站現在需要支持每小時25K點擊量的高峯流量。

這可以分解爲每分鐘417次點擊或每秒7次點擊。這僅僅在前端。

加入這個功能,比如數據庫操作的內部交易的數量,任何文件I/O每個用戶,這可能會在系統中運行任何批處理作業,報告等 理貨所有這些高達得到每交易數量秒,每分鐘等,您的系統需要支持。

當你有要求,如「平均響應時間必須3秒等」,這意味着你在網絡延遲/防火牆/代理等推測

最後這變得更加複雜 - 當談到選擇硬件,請查看每家制造商(如Sun,HP,IBM,Windows等)發佈的數據表。這些詳細列出了測試條件下每秒的最大交易量。我們通常在真實條件下接受這些峯值的50%:)

但是最終硬件的選擇通常是商業決定。

此外,您還需要在每一層至少保留2臺服務器:用於故障轉移羣集的web/app/even db。

負載測試

我們推薦在整個項目生命週期和推出後的獨立基準測試環境,所以你可以回來運行的應用程序專用的性能測試。縮放這是生產的縮小版,所以如果PROD有4個服務器和裁判1,那麼您測試峯值交易等的25%

調整&優化

人們往往把一些昂貴的硬件扔在一起,並期望它們都能很好地工作。您需要調整硬件和操作系統的各種參數,如TCP超時等 - 這些由軟件供應商發佈,並且這些必須在軟件完成後完成。在Ref env上設置這些調整參數,測試,然後確定需要將哪些參數傳輸到Production。

0

確定您的預期負載。 使用負載測試工具設置機器並運行一些測試。 如果你只完成了10%的高峯負載,並有一定的誤差餘量,那麼你有多接近你知道你將需要一些負載平衡。設計並實施解決方案並再次測試。確保你的解決方案足夠靈活,可以擴展。

試錯法幾乎是要走的路。這實際上取決於個人應用程序和使用模式。

0

使用樣本加載測試您的應用,並測量性能和加載指標。數據庫查詢,磁盤命中,延遲等等。

然後在部署時得到預期負載的估計(去問域專家)(你必須考慮平均負載和峯值)。

將兩者相乘並添加一些以確保一致。這是一個真的粗略的想法你需要什麼。

然後實現它,記住你通常不會呈線性比例,你可能不會得到預期的負載;)