公司專屬應用程式網站效能最佳化執行個體分析

來源:互聯網
上載者:User

前段時間對某個公司專屬應用程式網站進行了一次最佳化分析,解決這個網站經常死機和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架構,Live App。

伺服器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的動態緩衝的方式,在Live App中減少資料庫負載,提升訪問速度。

使用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秒左右。
對於網站來說,資料庫最佳化最重要,一個相同的查詢,最佳化前後效率可以相差幾百倍。

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.