前段時間對某個企業(yè)應(yīng)用網(wǎng)站進行了一次優(yōu)化分析,解決這個網(wǎng)站經(jīng)常死機和CPU高負載的種種問題,根據(jù)我接觸的一些應(yīng)用和服務(wù)器配置,我對這個案例總結(jié)了一些優(yōu)化方案,用來解決網(wǎng)站的高負載和高并發(fā)等問題,這里我和大家分享一下這個案例,希望能和大家一起探討一下這種解決方案的優(yōu)劣。
一、網(wǎng)站當(dāng)前狀況和性能現(xiàn)狀
系統(tǒng)硬件配置:CPU為兩個Intel Xeon 2.4G,物理內(nèi)存為2.5G.
系統(tǒng)軟件配置(deploy):操作系統(tǒng)為Windows Server 2003標(biāo)準(zhǔn)版,數(shù)據(jù)庫為SQL Server 2000.
服務(wù)器訪問量:工作日:訪問人數(shù) 10000,瀏覽量 30000 ,休息日:訪問人數(shù) 4000,瀏覽量 10000,每用戶訪問頁面為2.88頁面,平均停留時間為3分鐘。由于存在大型下載文件,服務(wù)器流量每天有80G到160G左右。
WEB系統(tǒng):采用Tomcat服務(wù)器,使用Struts和Hibernate.
網(wǎng)站系統(tǒng):網(wǎng)站有幾套不同的系統(tǒng),有新聞發(fā)布CMS系統(tǒng)、文件下載系統(tǒng)、反饋(feedback)系統(tǒng)等等,使用基于Java的Struts和Hibernate的MVC架構(gòu),動態(tài)應(yīng)用。
服務(wù)器CPU目前通常為40%左右,很多情況能增加到80-90%.
二、網(wǎng)站性能分析
通常情況下CPU達到80%說明系統(tǒng)性能存在瓶頸,需要找出系統(tǒng)的瓶頸究竟在哪里。
常熟網(wǎng)絡(luò)公司網(wǎng)站優(yōu)化是指在了解搜索引擎自然排名機制的基礎(chǔ)之上,對網(wǎng)站進行內(nèi)部及外部的調(diào)整優(yōu)化,改進網(wǎng)站在搜索引擎中關(guān)鍵詞的自然排名,獲得更多的展現(xiàn)量,吸引更多目標(biāo)客戶點擊訪問網(wǎng)站。
分析過程是,遠程登錄服務(wù)器,打開SQL Server 2000的事件探查器,記錄和分析SQL語句,同時打開任務(wù)管理器,查看各個進程占用CPU的狀況。
經(jīng)過查詢,SQLServer占用較大的CPU,說明系統(tǒng)調(diào)用CPU查詢較多,初步可以確認(rèn)是數(shù)據(jù)庫引起的系統(tǒng)瓶頸,由于使用Struts和Hibernate應(yīng)用(application),調(diào)用數(shù)據(jù)庫頻繁,因此可以采用減少SQL查詢的方式降低對SQLServer的調(diào)用,通常情況(Condition)下有兩種方法:Cache或靜態(tài)化。
另外,服務(wù)器的Web系統(tǒng)采用的架構(gòu)存在一些問題,因為存在大型下載文件,占用的流量(單位:立方米每秒)非常大,而Tomcat本身對于靜態(tài)文件的處理性能并不好,也會對系統(tǒng)性能產(chǎn)生負面的影響。
三、網(wǎng)站和服務(wù)器優(yōu)化方案
1、緩存
將頁面靜態(tài)化是通常的優(yōu)化方案,但是對于當(dāng)前的Tomcat服務(wù)器下的Struts和Hibernate未必有效,因為Tomcat對于靜態(tài)HTML文件本身支持并不理想,并且新聞內(nèi)容更新較為頻繁。因此,在現(xiàn)有架構(gòu)的基礎(chǔ)上,可以使用hibernate的ehcached的動態(tài)緩存的方式,在動態(tài)應(yīng)用中減少數(shù)據(jù)庫負載,提升訪問速度。
使用(use)ehcache對訪問頻率高,對數(shù)據(jù)庫消耗大的頁面進行動態(tài)緩存(時間10分鐘),在緩存的時間范圍內(nèi)這些頁面直接重緩存中讀取,無需訪問數(shù)據(jù)庫,提高這些頁面的訪問速度,減小數(shù)據(jù)庫訪問的壓力。這樣SQL Server數(shù)據(jù)庫的負載會大為降低。
2、靜態(tài)化
對于一般的網(wǎng)站來說,效率最高、消耗(consume)最小的就是純靜態(tài)化的html頁面,所以我們盡可能使我們的網(wǎng)站上的頁面采用靜態(tài)頁面來實現(xiàn),這個最簡單的方法其實也是最有效的方法。因此,從長遠考慮,需要對當(dāng)前網(wǎng)站的架構(gòu)進行一番調(diào)整,以適應(yīng)靜態(tài)化頁面的需求。
首先,由于Tomcat對于靜態(tài)頁面支持不太好,也不支持URL 重寫,因此需要安裝Apache服務(wù)器。
常熟網(wǎng)絡(luò)公司網(wǎng)站優(yōu)化是指在了解搜索引擎自然排名機制的基礎(chǔ)之上,對網(wǎng)站進行內(nèi)部及外部的調(diào)整優(yōu)化,改進網(wǎng)站在搜索引擎中關(guān)鍵詞的自然排名,獲得更多的展現(xiàn)量,吸引更多目標(biāo)客戶點擊訪問網(wǎng)站。
其次,由于Struts對于搜索引擎(Engine)不友好,因此將其全部轉(zhuǎn)換為靜態(tài)HTML頁面,即可降低對數(shù)據(jù)庫的查詢次數(shù),也可提高對搜索引擎的友好度。因此需要使用HTML靜態(tài)化的方式優(yōu)化服務(wù)器端的WEB程序。
具體實施方案是,將現(xiàn)有Tomcat配置為8080端口,安裝Apache服務(wù)器,配置為80端口,在Apache中修改httpd.conf文件,使得Tomcat解析JSP文件,靜態(tài)HTML文件、圖片文件、大型下載文件使用性能(xìng néng)更好的Apache支持。
修改Apache的。haccess文件,將Struts應(yīng)用重寫為靜態(tài)Html文件形式,修改相關(guān)代碼,使得其能自動生成靜態(tài)HTML文件。
優(yōu)化訪問量最多的頁面,首頁index.jsp為目前訪問量最多的頁面,里面的動態(tài)代碼刪除,將這個頁面轉(zhuǎn)化為靜態(tài)的html頁面index.html.
3、應(yīng)用部署
如果資金允許的話,可以將數(shù)據(jù)庫SQL Server 2000升級為SQLServer 2005,并單獨部署到另外一臺獨立服務(wù)器上,文件下載也單獨部署一臺服務(wù)器。
由于Tomcat本身的局限性,一個Tomcat的資源無法無限利用服務(wù)器的所有資源,并且Tomcat需要響應(yīng)的請求太多,勢必影響到整體的性能,因此配置(deploy)多服務(wù)器可以使得Web網(wǎng)站的負載大幅降低,從而提高整體的響應(yīng)能力。
常熟網(wǎng)絡(luò)公司網(wǎng)站優(yōu)化是指在了解搜索引擎自然排名機制的基礎(chǔ)之上,對網(wǎng)站進行內(nèi)部及外部的調(diào)整優(yōu)化,改進網(wǎng)站在搜索引擎中關(guān)鍵詞的自然排名,獲得更多的展現(xiàn)量,吸引更多目標(biāo)客戶點擊訪問網(wǎng)站。
不過這種部署的缺點是需要付出升級軟件、購買服務(wù)器、托管帶寬等成本開銷,建議不到萬不得已,可以不用付出額外的資金升級。