企業應用網站性能優化實例分析

前段時間對某個企業應用網站進行了一次優化分析,解決這個網站經常死機和CPU高負載的種種問題,根據我接觸的一些應用和服務器配置,我對這個案例總結了一些優化方案,用來解決網站的高負載和高併發等問題,這裏我和大家分享一下這個案例,希望能和大家一起探討一下這種解決方案的優劣。

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

系統硬件配置:CPU爲兩個Intel Xeon 2.4G,物理內存爲2.5G.

系統軟件配置:操作系統爲Windows Server 2003標準版,數據庫爲SQL Server 2000.

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

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

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

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

二、網站性能分析

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

分析過程是,遠程登錄服務器,打開SQL Server 2000的事件探查器,記錄和分析SQL語句,同時打開任務管理器,查看各個進程佔用CPU的狀況。

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

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

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

1、緩存

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

使用ehcache對訪問頻率高,對數據庫消耗大的頁面進行動態緩存(時間10分鐘),在緩存的時間範圍內這些頁面直接重緩存中讀取,無需訪問數據庫,提高這些頁面的訪問速度,減小數據庫訪問的壓力。這樣SQL Server數據庫的負載會大爲降低。

2、靜態化

對於一般的網站來說,效率最高、消耗最小的就是純靜態化的html頁面,所以我們儘可能使我們的網站上的頁面採用靜態頁面來實現,這個最簡單的方法其實也是最有效的方法。因此,從長遠考慮,需要對當前網站的架構進行一番調整,以適應靜態化頁面的需求。

首先,由於Tomcat對於靜態頁面支持不太好,也不支持URL 重寫,因此需要安裝Apache服務器。

其次,由於Struts對於搜索引擎不友好,因此將其全部轉換爲靜態HTML頁面,即可降低對數據庫的查詢次數,也可提高對搜索引擎的友好度。因此需要使用HTML靜態化的方式優化服務器端的WEB程序。

具體實施方案是,將現有Tomcat配置爲8080端口,安裝Apache服務器,配置爲80端口,在Apache中修改httpd.conf文件,使得Tomcat解析JSP文件,靜態HTML文件、圖片文件、大型下載文件使用性能更好的Apache支持。

修改Apache的.haccess文件,將Struts應用重寫爲靜態Html文件形式,修改相關代碼,使得其能自動生成靜態HTML文件。

優化訪問量最多的頁面,首頁index.jsp爲目前訪問量最多的頁面,裏面的動態代碼刪除,將這個頁面轉化爲靜態的html頁面index.html.

3、應用部署

如果資金允許的話,可以將數據庫SQL Server 2000升級爲SQLServer 2005,並單獨部署到另外一臺獨立服務器上,文件下載也單獨部署一臺服務器。

由於Tomcat本身的侷限性,一個Tomcat的資源無法無限利用服務器的所有資源,並且Tomcat需要響應的請求太多,勢必影響到整體的性能,因此配置多服務器可以使得Web網站的負載大幅降低,從而提高整體的響應能力。

不過這種部署的缺點是需要付出升級軟件、購買服務器、託管帶寬等成本開銷,建議不到萬不得已,可以不用付出額外的資金升級。

以上就是我針對某企業應用網站進行分析和優化的具體步驟和方案,希望能起到拋磚引玉的作用,供大家參考。

 

原文出處:http://www.williamlong.info/archives/1476.html

http://www.chinaz.com/Webbiz/Exp/0RS61K2008.html

 

 

回覆

============================================================

沒想到日pv才3萬的站點也居然需要專門優化,看來相關開發人員的經驗不是很豐富。

有沒有檢查過tomcat的啓動參數?默認參數情況下,分給Tomcat的java虛擬機的內存是很少的。 服務器內存有2
g 那麼至少應該給tomcat的啓動參數配上 -Xmx512m.

在不大改動代碼的情況下,其實用oscache的jsp標籤對頁面進行緩存,比生成靜態文件的方式更方便更有效。
tomcat處理靜態文件的性能沒有apache高,但是一點也不弱。

除了大文件下載,普通的cms類系統,在這個服務器合理優化部署的情況下,每天承受上百萬級別的pv也是可能的。

 

============================================================

建議從索引的角度來考慮。
我的一個服務器只是普通的p4臺式機,只有1g的內存,但是可以支持將近10萬ip的訪問量,響應速度在1.4秒左右。
對於網站來說,數據庫優化最重要,一個相同的查詢,優化前後效率可以相差幾百倍。

============================================================

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章