WAS7 ND+IHS性能調優出現的相關問題解決辦法2

巧婦難為無米之炊,看來短時間無法解決down機的問題了。只能先找到具體出問題的地方了。再針對性優化網站了。整個優化過程走了不少彎路,有些地方是改了之後又改回來。

以下是監控和分析處理和優化過程:

第1天:白天做壓力,100個時開始監控到泄漏,但之後幾千並發沒未宕機!(說明網頁訪問的壓力還能承受住)

第2,3天周六日:經過討論,有人認為首頁的太多的iframe 或導致並發太高而且重複引用JS,影響性能。因此由設計人員查看代碼,實現去iframe和採用頁面緩存oscache技術改寫首頁。(走了彎路…)

同時考慮啟用IHS進行請求轉發,靜態化文件處理。

第4天:在前次的修改中,由於操作系統內碼問題和程序需要變化,沒有來及啟用IHS,加上積壓的訪問下載需要,導致今天更為嚴重的死機現象(5次)

(走了彎路的結果就是離目標越來越遠,情況更加嚴重!)

不得已,晚上先把IHS裝上,以便監控請求日誌。

第5天:上午監控,網站正常,was正常且內存幾乎不變化,下載快,netstat監控約1500鏈接;Http進程20個,每個佔280M內存,逐漸佔滿OS內存。17點死機。(19點鐘reboot,到21:22分,分析IHS日誌,共有2702個附件下載。預計白天比這要多)(說明網站存在大量的下載,而且很多都是下載工具產生的連接,例如迅雷。這種下載會產生大量連接,並且長期暫用!)

 
 

第6天:下午17點前死機(今天1次)。應該是was堆滿。有jc和dump,分析jc有log 寫鎖或等待。發現Downloadservlet(下載的處理程序)有未關閉連接等問題,修改為不用流而直接跳轉到HTTP靜態直接下載。

(說明下載的程序有問題,經過分析,需要將下載的工作交給IHS來處理,走WAS的話容易導致死鎖,線程等待。)

 
 

第7天:未死機。監控系統內存滿,WAS JVM的heap滿,有死機的徵兆。人為重啟。

第8天:白天正常。18點多系統宕機崩潰,產生jc和dump。

第8天以後的死機,確定是OSCache組件不穩定,在WAS環境下出現了內存泄露,最後去掉OSCache,但頁面速度比較慢,需要5秒才能打開。項目組最後解決方法是:將首頁靜態化,目錄菜單靜態化。

(從彎路上饒了回來)

 
 

總結最終的解決辦法:

網站的網頁的壓力基本上還是能承受住,雖然可能首頁人多的是會慢一些,問題主要出在文件的下載這塊。下載的程序是通過WAS直接處理的,導致大文件下載長期暫有連接和資料庫連接,最終導致系統崩潰。

解決措施:

1、網站首頁靜態化,所有的菜單欄等資料庫訪問量較多的地方也靜態化處理。

2、安裝IHS, 通過IHS轉發請求到 WAS上的網站服務。因為IHS對於長連接的請求會有中斷處理,有些超時沒有響應的請求會自動關閉,這點WAS好像就比較難處理。

3、將文件下載的工作通過IHS靜態化文件進行處理。幸好我們的所有附件都是放在文件伺服器上,可以通過配置靜態化目錄,來實現對這些文件的訪問,同時屏蔽掉WAS下面的文件下載程序應用包。

4、調低應用中的日誌級別,因為日誌級別和調試輸出的大量數據,導致WAS可能會忙於進行文件IO操作,反應降低,然後循環惡性發展,使系統處於假崩潰狀態!

 
 

最終網站伺服器的部署環境如下:

操作系統: RHEL 5.5

應用伺服器: WAS 7 單節點+ IHS

WAS參數:

數據源連接池:200

    JVM堆大小: 256M到1024M

    啟用 servlet 高速緩存 

    會話最大1000,允許溢出,會話超時2分鐘。 因為網站基本上沒什麼會話數據需要保存,所以設短一點,避免暫用大量內存。

    線程池50到100,允許溢出

HIS配置文件httpd.conf關鍵參數:

LogLevel error (調整日誌級別)

#CustomLog logs/access_log common (屏蔽該日誌)

Alias /fileStorage    “/nfs/datafile/” (指定靜態化文件目錄)

<IfModule prefork.c> (調整IHS的最大並發數)

ServerLimit 16

StartServers 5

MinSpareServers 5

MaxSpareServers 15

MaxClients     600

MaxRequestsPerChild 3000

</IfModule>

KeepAlive On (調整IHS的請求的最長連接時間以及超時時間,由於網站的特殊性,所以連接不能太長,不然佔用資源不釋放,就會容易導致死機或者無法訪問)

MaxKeepAliveRequests 500

KeepAliveTimeout 5

 
 

資料庫:Orcale 11g

 
 

整個優化到這裡基本上就完了。 下面是一些配置上面的心得,希望對大家有用。

 
 

1、分析網站連接問題的腳本和工具:

1)分析哪種tcp狀態數量異常:

netstat -nat|awk ‘{print awk $NF}’|sort|uniq -c|sort –n

在網站訪問量壓力較大情況性下,如果發現time_wait、Fin_wait1等較多,考慮修改linux系統etc/sysctl.conf文件。

可參考文檔:http://wenku.baidu.com/view/7a04e2d284254b35eefd3408.html

2)將請求80服務的client ip按照連接數排序:

netstat -nat|grep “:80″|awk ‘{print $5}’ |awk -F: ‘{print $1}’ | sort| uniq -c|sort –n

用於查找惡意連接IP。

3)使用HttpWatch軟體

在需要分析網頁下載效率時使用。避免網站頁面中(特別是首頁)出現較大圖片、JS等對象。通過該軟體可以看到各個URL的訪問時間,便於針對性優化。

 
 

2、動靜分離的配置:

WAS+ IHS動靜分離的配置在網上查了下,有個幾個方法:

1)        一個比較麻煩的方法就是屏蔽靜態內容通過 WebSphere Application Server 中的 File Serving 功能從 WAR 文件返回的功能。需要修改一堆配置文件,然後要重新產生插件等等。 比較麻煩,而且容易出錯,這裡就不講了。大家有興趣可以參考:

http://space.itpub.net/14789789/viewspace-628556

 
 

2)        第二種比較簡單的就是把靜態化的文件直接放到 IHS 伺服器,通過IHS直接處理,不走WAS。本項目就是採用的這種。

3)        第三種就是購買 WebSphere Edge Server(簡稱 Edge Server)產品來實現了。

 
 

下面主要講第二種的配置:

以下文章點擊率最高

Loading…

     

如果這文章對你有幫助,請掃左上角微信支付-支付寶,給於打賞,以助博客運營