一、網站當前狀況和效能現狀

系統硬體配置:CPU 為兩個 IntelXeon2.4G,實體記憶體為 2.5G.

系統站羣軟件配置:作業系統為 WindowsServer2003 標準版,資料庫為 SQLServer2000.

站羣服務器訪問量:工作日:訪問人數 10000,瀏覽量 30000,休息日:訪問人數 4000,瀏覽量 10000,每多用户訪問頁面為 2.88 頁面,平均停留時間為 3 分鐘。由於存在大型下載檔案,站羣服務器流量每天有 80G 到 160G 左右。

WEB 系統:採用 Tomcat 站羣服務器,使用 Struts 和 Hibernate.

網站系統:網站有幾套不同的系統,有新聞釋出 CMS 系統、檔案下載系統、反饋系統等等,使用基於 Java 的 Struts 和 Hibernate 的 MVC 架構,動態應用。

站羣服務器 CPU 目前通常為 40% 左右,很多情況能增加到 80-90%.

二、網站效能分析

通常情況下 CPU 達到 80% 説明系統效能存在瓶頸,需要找出系統的瓶頸究竟在哪裏。

分析過程是,遠端登入站羣服務器,開啓 SQLServer2000 的事件探查器,記錄和分析 SQL 語句,同時開啓工作管理員,檢視各個程序佔用 CPU 的狀況。

經過查詢,SQLServer 佔用較大的 CPU,説明系統呼叫 CPU 查詢較多,初步可以確認是資料庫引起的系統瓶頸,由於使用 Struts 和 Hibernate 應用,呼叫資料庫頻繁,因此可以採用減少 SQL 查詢的方式降低對 SQLServer 的呼叫,通常情況下有兩種方法:Cache 或靜態化。

另外,站羣服務器的 Web 系統採用的架構存在一些問題,因為存在大型下載檔案,佔用的流量非常大,而 Tomcat 本身對於靜態檔案的處理效能並不好,也會對系統效能產生負面的影響。

三、網站和站羣服務器優化方案

將頁面靜態化是通常的優化方案,但是對於當前的 Tomcat 站羣服務器下的 Struts 和 Hibernate 未必有效,因為 Tomcat 對於靜態 HTML 檔案本身支援並不理想,並且新聞內容更新較為頻繁。因此,在現有架構的基礎上,可以使用 hibernate 的 ehcached 的動態快照的方式,在動態應用中減少資料庫負載,提升訪問速度。