好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 基于Web應用的性能分析及兩種優化的案例

基于Web應用的性能分析及兩種優化的案例

熱門標簽:真如外呼系統 電話機器人適合哪些行業 搜地圖標注怎么找標 武漢外呼防封系統多少錢 360地圖標注t9 中國的地圖標注遠東 400電話杭州辦理 騰訊地圖標注美食 荊門智能溝通電話機器人源碼

  一、 基于動態內容為主的網站優化案例

  1.網站運行環境說明

  硬件環境:1臺IBM x3850服務器, 單個雙核Xeon 3.0G CPU,2GB內存,3塊72GB SCSI磁盤。

  操作系統:CentOS5.4。

  網站架構:Web應用是基于LAMP架構,所有服務都在一臺服務器上部署。

  2.性能問題現象及處理措施

  現象描述

  網站在上午10點左右和下午3點左右訪問高峰時,網頁無法打開,重啟服務后,網站能在一段時間內能正常服務,但過一會又變得響應緩慢,最后網頁徹底無法打開。

  檢查配置

  首先檢查系統資源狀態,發現服務出現故障時系統負載極高,內存基本耗盡,接著檢查Apache配置文件httpd.conf,發現“MaxClients”選項值被設置為2000,并且打開了Apache的KeepAlive特性。

  處理措施

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

  3.第一次分析優化

  既然是由系統資源耗盡導致的網站服務失去響應,那么就深入分析系統資源的使用情況,通過uptime、vmstat、top、ps等命令的聯合使用,得出如下結論:

  結論描述

  系統平均負載很高,通過uptime輸出的系統“load average”值都在10以上,而CPU資源也消耗嚴重,這是造成網站響應緩慢或長時間沒有響應的主要原因,而導致系統資源消耗過高的主要依據是用戶進程消耗資源嚴重。

  原因分析

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

  處理措施

  修改首頁PHP代碼,縮減頁面大小,并且對訪問頻繁的操作增加緩存機制,盡量減少程序對數據庫的訪問。

  4.第二次分析優化

  通過前面簡單優化,系統服務宕機現象出現次數減少很多,但是在訪問高峰時網站偶爾還會無法正常訪問。這次仍然從分析系統資源使用狀況入手,發現系統內存資源消耗過大,并且磁盤I/O有等待問題,于是得出如下結論:

  原因分析

  內存消耗過大,肯定是用戶訪問進程數過多導致的,在沒有優化PHP代碼之前,每個Apache子進程消耗6~8MB內存,如果設置Apache的最大用戶數為1024,那么內存耗盡是必然的,當物理內存耗盡時,虛擬內存就會啟用,頻繁地使用虛擬內存,肯定會出現磁盤I/O等待問題,最終導致CPU資源耗盡。

  處理措施

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

  5.第三次分析優化

  經過前兩次的優化,網站基本運行正常,但是在訪問高峰時偶爾還會出現站點無法訪問得現象,繼續進行問題分析,通過命令查看系統資源,發現仍是CPU資源耗盡導致的,但是與前兩次又有所不同:

  原因分析

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

  處理措施

  優化程序中的SQL語句,增加where子句上的匹配條件,減少遍歷全部的查詢,同時在where和order by子句的字段上建立索引,并且增加程序緩存機制,通過這次優化,網站運行基本處于正常狀態,再也沒有出現宕機的現象。

  6.第四次優化分析

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

  二、  基于動態、靜態內容結合的網站優化案例

  1.網站運行環境說明

  硬件環境:兩臺IBM x3850服務器, 單個雙核Xeon 3.0G CPU,4GB內存,3塊72GB SCSI磁盤。

  操作系統:CentOS5.4。

  網站架構:Web應用是基于J2EE架構的電子商務應用,Web端應用服務器是Tomcat,采用MySQL數據庫,Web和數據庫獨立部署在兩臺服務器上。

  2.性能問題現象以及處理措施

  現象描述

  網站訪問高峰時,網頁無法打開,重啟Java服務后,網站可以正常運行一段時間,但過一會又變得響應緩慢,最后網頁徹底無法打開。

  檢查配置

  首先檢查系統資源狀態,發現服務出現故障時系統負載極高,CPU滿負荷運行,Java進程占用了系統99%的CPU資源,但內存資源占用不大;接著檢查應用服務器信息,發現只有一個Tomcat在運行Java程序;接著查看Tomcat配置文件server.xml,發現server.xml文件中的參數都是默認配置,沒有進行任何優化。

  處理措施

  server.xml文件的默認參數需要根據應用的特性進行適當的修改,例如可以修改“connectionTimeout“、“maxKeepAliveRequests”、“maxProcessors”等幾個Tmcat配置文件的參數,適當加大這幾個參數值。修改參數值后,繼續觀察發現,網站服務宕機時間間隔加長了,不像以前那么頻繁,但是Java進程消耗CPU資源還是很嚴重,網頁訪問速度極慢。

  3.第一次分析優

  既然Java進程消耗CPU資源嚴重,那么需要查看到底是什么導致Java消耗資源嚴重,通過lsof、netstat命令發現有大量的Java請求等待信息,然后查看Tomcat日志,發現大量報錯信息、日志提示和數據庫連接超時,最終無法連接到數據庫,同時,訪問網站靜態資源,也無法訪問,于是得出如下結論:

  原因分析

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

  處理措施

  要優化Tomcat性能,需要從結構上進行重構,首先,加入Apache支持,由Apache處理靜態資源,由Tomcat處理動態請求,Apache服務器和Tomcat服務器之間使用Mod_JK模塊進行通信。使用Mod_JK模塊的好處是:它可以定義詳細的資源處理規則,根據動態、靜態網站的特點,將靜態資源文件全部交給Apache處理,而動態請求通過Mod_JK模塊傳給Tomcat去處理,通過Apache+JK+Tomcat的整合,可以大幅度提高Tomcat應用的性能。

  4.第二次分析優化

  經過前面的優化措施,Java資源偶爾會增高,但是一段時間后又會自動降低,這屬于正常狀態,而在高并發訪問情況下,Java進程有時還會出現資源上升無法下降的情況,通過查看Tomcat日志,綜合分析得出如下結論:要獲得更高、更穩定的性能,單一的Tomcat應用服務器有時會無法滿足需求,因此要結合Mod_JK模塊運行基于Tomcat的負載均衡系統,這樣前端由Apache負責用戶請求的調度,后端又多個Tomcat負責動態應用的解析操作,通過將負載均分配給多個Tomcat服務器,網站的整體性能會有一個質的提升。

  以上就是基于Web應用的性能分析及優化案例,謝謝閱讀,希望能幫到大家,請繼續關注腳本之家,我們會努力分享更多優秀的文章。

標簽:河源 紅河 迪慶 本溪 江門 聊城 社區通知 南充

巨人網絡通訊聲明:本文標題《基于Web應用的性能分析及兩種優化的案例》,本文關鍵詞  基于,Web,應,用的,性能,分析,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《基于Web應用的性能分析及兩種優化的案例》相關的同類信息!
  • 本頁收集關于基于Web應用的性能分析及兩種優化的案例的相關信息資訊供網民參考!
  • 推薦文章