欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Web應(yīng)用的性能分析及兩種優(yōu)化的案例

  發(fā)布時(shí)間:2014-09-28 15:24:59   作者:佚名   我要評(píng)論
這篇文章主要為大家介紹了基于Web應(yīng)用的性能分析及兩種優(yōu)化的案例,第一種是基于動(dòng)態(tài)內(nèi)容為主的網(wǎng)站優(yōu)化案例,第二種是基于動(dòng)態(tài)、靜態(tài)內(nèi)容結(jié)合的網(wǎng)站優(yōu)化案例,需要的朋友可以參考下

  一、 基于動(dòng)態(tài)內(nèi)容為主的網(wǎng)站優(yōu)化案例

  1.網(wǎng)站運(yùn)行環(huán)境說明

  硬件環(huán)境:1臺(tái)IBM x3850服務(wù)器, 單個(gè)雙核Xeon 3.0G CPU,2GB內(nèi)存,3塊72GB SCSI磁盤。

  操作系統(tǒng):CentOS5.4。

  網(wǎng)站架構(gòu):Web應(yīng)用是基于LAMP架構(gòu),所有服務(wù)都在一臺(tái)服務(wù)器上部署。

  2.性能問題現(xiàn)象及處理措施

  現(xiàn)象描述

  網(wǎng)站在上午10點(diǎn)左右和下午3點(diǎn)左右訪問高峰時(shí),網(wǎng)頁無法打開,重啟服務(wù)后,網(wǎng)站能在一段時(shí)間內(nèi)能正常服務(wù),但過一會(huì)又變得響應(yīng)緩慢,最后網(wǎng)頁徹底無法打開。

  檢查配置

  首先檢查系統(tǒng)資源狀態(tài),發(fā)現(xiàn)服務(wù)出現(xiàn)故障時(shí)系統(tǒng)負(fù)載極高,內(nèi)存基本耗盡,接著檢查Apache配置文件httpd.conf,發(fā)現(xiàn)“MaxClients”選項(xiàng)值被設(shè)置為2000,并且打開了Apache的KeepAlive特性。

  處理措施

  根據(jù)上面的檢查,初步判斷是Apache的”MaxClients“選項(xiàng)配置不當(dāng)引起的,因?yàn)橄到y(tǒng)內(nèi)存僅有2GB大小,而“MaxClients”選項(xiàng)被配置為2000,過多的用戶訪問進(jìn)程耗盡了系統(tǒng)內(nèi)存;然后,修改httpd.conf配置文件的“MaxClients”選項(xiàng),將此值由2000降到1500;繼續(xù)觀察發(fā)現(xiàn),網(wǎng)站還是頻繁宕機(jī),于是又將“MaxClients”選項(xiàng)值降到1024,觀察一段時(shí)間發(fā)現(xiàn),網(wǎng)站服務(wù)宕機(jī)時(shí)間間隔加長了,不像以前那么頻繁,但是系統(tǒng)負(fù)載還是很高,網(wǎng)頁訪問速度極慢。

  3.第一次分析優(yōu)化

  既然是由系統(tǒng)資源耗盡導(dǎo)致的網(wǎng)站服務(wù)失去響應(yīng),那么就深入分析系統(tǒng)資源的使用情況,通過uptime、vmstat、top、ps等命令的聯(lián)合使用,得出如下結(jié)論:

  結(jié)論描述

  系統(tǒng)平均負(fù)載很高,通過uptime輸出的系統(tǒng)“load average”值都在10以上,而CPU資源也消耗嚴(yán)重,這是造成網(wǎng)站響應(yīng)緩慢或長時(shí)間沒有響應(yīng)的主要原因,而導(dǎo)致系統(tǒng)資源消耗過高的主要依據(jù)是用戶進(jìn)程消耗資源嚴(yán)重。

  原因分析

  通過top命令發(fā)現(xiàn),每個(gè)Apache子進(jìn)程消耗將近6~8MB左右內(nèi)存,這是不正常的。根據(jù)經(jīng)驗(yàn),在正常情況下每個(gè)Apache子進(jìn)程消耗的內(nèi)存在1MB左右,結(jié)合Apache輸出日志發(fā)現(xiàn),網(wǎng)站首頁訪問頻率最高,也就是說首頁程序代碼可能存在問題。于是檢查首頁的PHP代碼,發(fā)現(xiàn)首頁的頁面非常大,圖片很多,并且由全動(dòng)態(tài)的程序組成,這樣每次用戶訪問首頁都要多次查詢數(shù)據(jù)庫,而查詢數(shù)據(jù)庫是個(gè)非常耗費(fèi)CPU資源的過程,并且首頁P(yáng)HP代碼也沒有相應(yīng)的緩存機(jī)制,每個(gè)用戶請(qǐng)求都要重新進(jìn)行數(shù)據(jù)庫查詢操作,數(shù)據(jù)庫查詢負(fù)荷有多高可想而知。

  處理措施

  修改首頁P(yáng)HP代碼,縮減頁面大小,并且對(duì)訪問頻繁的操作增加緩存機(jī)制,盡量減少程序?qū)?shù)據(jù)庫的訪問。

  4.第二次分析優(yōu)化

  通過前面簡單優(yōu)化,系統(tǒng)服務(wù)宕機(jī)現(xiàn)象出現(xiàn)次數(shù)減少很多,但是在訪問高峰時(shí)網(wǎng)站偶爾還會(huì)無法正常訪問。這次仍然從分析系統(tǒng)資源使用狀況入手,發(fā)現(xiàn)系統(tǒng)內(nèi)存資源消耗過大,并且磁盤I/O有等待問題,于是得出如下結(jié)論:

  原因分析

  內(nèi)存消耗過大,肯定是用戶訪問進(jìn)程數(shù)過多導(dǎo)致的,在沒有優(yōu)化PHP代碼之前,每個(gè)Apache子進(jìn)程消耗6~8MB內(nèi)存,如果設(shè)置Apache的最大用戶數(shù)為1024,那么內(nèi)存耗盡是必然的,當(dāng)物理內(nèi)存耗盡時(shí),虛擬內(nèi)存就會(huì)啟用,頻繁地使用虛擬內(nèi)存,肯定會(huì)出現(xiàn)磁盤I/O等待問題,最終導(dǎo)致CPU資源耗盡。

  處理措施

  通過上面對(duì)PHP代碼的優(yōu)化,每個(gè)Apache子進(jìn)程消耗的內(nèi)存資源基本維持在1~2MB左右,因此修改Apache配置文件httpd.conf中的”MaxClients”選項(xiàng)值為“600”,同時(shí)把Apache配置中的“KeepAlive”特性關(guān)閉,這樣Apache進(jìn)程數(shù)大量減少,基本維持在500~600之間,雖然偶爾也會(huì)使用虛擬內(nèi)存,但是Web服務(wù)正常了,服務(wù)宕機(jī)問題也很少出現(xiàn)了。

  5.第三次分析優(yōu)化

  經(jīng)過前兩次的優(yōu)化,網(wǎng)站基本運(yùn)行正常,但是在訪問高峰時(shí)偶爾還會(huì)出現(xiàn)站點(diǎn)無法訪問得現(xiàn)象,繼續(xù)進(jìn)行問題分析,通過命令查看系統(tǒng)資源,發(fā)現(xiàn)仍是CPU資源耗盡導(dǎo)致的,但是與前兩次又有所不同:

  原因分析

  通過觀察后臺(tái)日志,發(fā)現(xiàn)PHP程序有頻繁訪問數(shù)據(jù)庫的操作,大量的SQL語句中有where, order by等子句;同時(shí),數(shù)據(jù)庫查詢過多,大部分都是復(fù)雜查詢,一般都需要遍歷全表,而大量的表沒有建立索引,這樣的程序代碼導(dǎo)致MySQL數(shù)據(jù)庫負(fù)荷過高,而MySQL數(shù)據(jù)庫和Apache部署在同一臺(tái)服務(wù)器上,這也是導(dǎo)致服務(wù)器消耗CPU資源過高的原因。

  處理措施

  優(yōu)化程序中的SQL語句,增加where子句上的匹配條件,減少遍歷全部的查詢,同時(shí)在where和order by子句的字段上建立索引,并且增加程序緩存機(jī)制,通過這次優(yōu)化,網(wǎng)站運(yùn)行基本處于正常狀態(tài),再也沒有出現(xiàn)宕機(jī)的現(xiàn)象。

  6.第四次優(yōu)化分析

  通過前面三次優(yōu)化以后,網(wǎng)站在程序代碼、操作系統(tǒng)、Apache等方面的優(yōu)化空間越來越小,要避免出現(xiàn)服務(wù)氣宕機(jī)現(xiàn)象,并且保證網(wǎng)站穩(wěn)定、高效、快速地運(yùn)行,可以從網(wǎng)站結(jié)構(gòu)上進(jìn)行優(yōu)化,也就是將Web和數(shù)據(jù)庫分離部署,可以增加一臺(tái)專用的數(shù)據(jù)庫服務(wù)器,單獨(dú)部署MySQL數(shù)據(jù)庫。隨著訪問量的增加,如果前端無法滿足訪問請(qǐng)求,還可以增加多臺(tái)Web服務(wù)器,Web服務(wù)器之間進(jìn)行負(fù)載均衡部署,解決前端性能瓶頸;如果在數(shù)據(jù)庫端還存在讀寫壓力,還可以繼續(xù)增加一臺(tái)MySQL服務(wù)器,將MySQL進(jìn)行讀寫分離部署,這樣一套高性能、高可靠的網(wǎng)站系統(tǒng)就構(gòu)建起來了。

  二、  基于動(dòng)態(tài)、靜態(tài)內(nèi)容結(jié)合的網(wǎng)站優(yōu)化案例

  1.網(wǎng)站運(yùn)行環(huán)境說明

  硬件環(huán)境:兩臺(tái)IBM x3850服務(wù)器, 單個(gè)雙核Xeon 3.0G CPU,4GB內(nèi)存,3塊72GB SCSI磁盤。

  操作系統(tǒng):CentOS5.4。

  網(wǎng)站架構(gòu):Web應(yīng)用是基于J2EE架構(gòu)的電子商務(wù)應(yīng)用,Web端應(yīng)用服務(wù)器是Tomcat,采用MySQL數(shù)據(jù)庫,Web和數(shù)據(jù)庫獨(dú)立部署在兩臺(tái)服務(wù)器上。

  2.性能問題現(xiàn)象以及處理措施

  現(xiàn)象描述

  網(wǎng)站訪問高峰時(shí),網(wǎng)頁無法打開,重啟Java服務(wù)后,網(wǎng)站可以正常運(yùn)行一段時(shí)間,但過一會(huì)又變得響應(yīng)緩慢,最后網(wǎng)頁徹底無法打開。

  檢查配置

  首先檢查系統(tǒng)資源狀態(tài),發(fā)現(xiàn)服務(wù)出現(xiàn)故障時(shí)系統(tǒng)負(fù)載極高,CPU滿負(fù)荷運(yùn)行,Java進(jìn)程占用了系統(tǒng)99%的CPU資源,但內(nèi)存資源占用不大;接著檢查應(yīng)用服務(wù)器信息,發(fā)現(xiàn)只有一個(gè)Tomcat在運(yùn)行Java程序;接著查看Tomcat配置文件server.xml,發(fā)現(xiàn)server.xml文件中的參數(shù)都是默認(rèn)配置,沒有進(jìn)行任何優(yōu)化。

  處理措施

  server.xml文件的默認(rèn)參數(shù)需要根據(jù)應(yīng)用的特性進(jìn)行適當(dāng)?shù)男薷?,例如可以修?ldquo;connectionTimeout“、“maxKeepAliveRequests”、“maxProcessors”等幾個(gè)Tmcat配置文件的參數(shù),適當(dāng)加大這幾個(gè)參數(shù)值。修改參數(shù)值后,繼續(xù)觀察發(fā)現(xiàn),網(wǎng)站服務(wù)宕機(jī)時(shí)間間隔加長了,不像以前那么頻繁,但是Java進(jìn)程消耗CPU資源還是很嚴(yán)重,網(wǎng)頁訪問速度極慢。

  3.第一次分析優(yōu)

  既然Java進(jìn)程消耗CPU資源嚴(yán)重,那么需要查看到底是什么導(dǎo)致Java消耗資源嚴(yán)重,通過lsof、netstat命令發(fā)現(xiàn)有大量的Java請(qǐng)求等待信息,然后查看Tomcat日志,發(fā)現(xiàn)大量報(bào)錯(cuò)信息、日志提示和數(shù)據(jù)庫連接超時(shí),最終無法連接到數(shù)據(jù)庫,同時(shí),訪問網(wǎng)站靜態(tài)資源,也無法訪問,于是得出如下結(jié)論:

  原因分析

  Tomcat本身就是一個(gè)Java容器,是使用連接/線程模型處理業(yè)務(wù)請(qǐng)求的,主要用于處理Jsp、servlet等動(dòng)態(tài)應(yīng)用,雖然它也能當(dāng)作HTTP服務(wù)器,但是處理靜態(tài)資源的效率很低,遠(yuǎn)遠(yuǎn)比不上Apache或Nginx。從前面觀察到的現(xiàn)象分析,可以初步判斷是Tomcat無法及時(shí)響應(yīng)客戶端的請(qǐng)求,進(jìn)而導(dǎo)致請(qǐng)求隊(duì)列越來越多,直到Tomcat徹底崩潰。對(duì)于一個(gè)正常的訪問請(qǐng)求來說,服務(wù)器接收到請(qǐng)求后,會(huì)把請(qǐng)求交給Tomcat去處理,Tomcat接著執(zhí)行編譯、訪問數(shù)據(jù)庫等操作,然后把信息返回給客戶端,客戶端接收到信息后,Tomcat就關(guān)閉這個(gè)請(qǐng)求鏈接,這樣一個(gè)完整的訪問過程就結(jié)束了。而在高并發(fā)訪問狀態(tài)下,很多的請(qǐng)求瞬間都交給Tomcat處理,這樣Tomcat還沒有完成第一個(gè)請(qǐng)求,第二個(gè)請(qǐng)求就來了,接著是第三個(gè),等等,這樣越積越多,Tomcat最終失去響應(yīng), Java進(jìn)程就會(huì)處于僵死狀態(tài),資源無法釋放,這就是根本原因。

  處理措施

  要優(yōu)化Tomcat性能,需要從結(jié)構(gòu)上進(jìn)行重構(gòu),首先,加入Apache支持,由Apache處理靜態(tài)資源,由Tomcat處理動(dòng)態(tài)請(qǐng)求,Apache服務(wù)器和Tomcat服務(wù)器之間使用Mod_JK模塊進(jìn)行通信。使用Mod_JK模塊的好處是:它可以定義詳細(xì)的資源處理規(guī)則,根據(jù)動(dòng)態(tài)、靜態(tài)網(wǎng)站的特點(diǎn),將靜態(tài)資源文件全部交給Apache處理,而動(dòng)態(tài)請(qǐng)求通過Mod_JK模塊傳給Tomcat去處理,通過Apache+JK+Tomcat的整合,可以大幅度提高Tomcat應(yīng)用的性能。

  4.第二次分析優(yōu)化

  經(jīng)過前面的優(yōu)化措施,Java資源偶爾會(huì)增高,但是一段時(shí)間后又會(huì)自動(dòng)降低,這屬于正常狀態(tài),而在高并發(fā)訪問情況下,Java進(jìn)程有時(shí)還會(huì)出現(xiàn)資源上升無法下降的情況,通過查看Tomcat日志,綜合分析得出如下結(jié)論:要獲得更高、更穩(wěn)定的性能,單一的Tomcat應(yīng)用服務(wù)器有時(shí)會(huì)無法滿足需求,因此要結(jié)合Mod_JK模塊運(yùn)行基于Tomcat的負(fù)載均衡系統(tǒng),這樣前端由Apache負(fù)責(zé)用戶請(qǐng)求的調(diào)度,后端又多個(gè)Tomcat負(fù)責(zé)動(dòng)態(tài)應(yīng)用的解析操作,通過將負(fù)載均分配給多個(gè)Tomcat服務(wù)器,網(wǎng)站的整體性能會(huì)有一個(gè)質(zhì)的提升。

  以上就是基于Web應(yīng)用的性能分析及優(yōu)化案例,謝謝閱讀,希望能幫到大家,請(qǐng)繼續(xù)關(guān)注腳本之家,我們會(huì)努力分享更多優(yōu)秀的文章。

相關(guān)文章

最新評(píng)論