如何提高web系統的吞吐能力?

liny發表於2012-01-16
我剛剛開發了一個小型的網上商店,採用的是struts1.3的一部分程式碼來做的交易分發,前端用javascript在jQuery的基礎上自己做的UI元件。對系統也做了一些效能最佳化上的考慮,比如將相對變動較少的資訊在應用servlet初始化的時候就快取在服務端啊,再比如商品類前端UI元件使用OO設計,快取該商品相關的資訊,透過改變UI的樣式來達到在同一張頁面不重新整理展現商品的列表資訊和詳細資訊,而不是重新向伺服器請求不同的頁面等等。

系統部署環境:windows server 2003 + tomcat7 + mysql5.5

透過使用JMeter測試,在一個較為常見的使用者場景構成的測試計劃下(包括使用者登入,檢視網站各個頁面,挑選商品,檢視個人資訊,結算,退出等等),啟動1000個使用者執行緒,在30分鐘內做不斷的上述測試計劃的操作迴圈。系統執行比較穩定,交易成功率為100%,CPU的佔用也比較低。

我在想,如果按照目前單臺伺服器部署可以支援1000名線上使用者正常使用的話,那麼更多的使用者應該怎麼做?

如果是做叢集,那麼我想支援的線上人數按照線性推論的話,n臺伺服器叢集后應該可以支援1000*n個使用者同時線上。。。。。
這樣問題就來了:像12306或者淘寶那樣的高併發大網站的話,需要滿足同時線上的人數何止百萬,如果按照上面的推論,同樣的部署環境,我得需要1000臺伺服器!!! 這顯然是不合理的解決方案。。。。。。

那麼,究竟他們是如何解決這樣的問題的呢? 請有實際經驗的朋友和老師解答下。謝謝!

相關文章