【轉】基於RHEL5的websphere + IHS 6.1調優

spectre2發表於2013-03-07
前臺為8臺聯想R510的pc server,配置為2顆4核2g的cpu,16g記憶體。通過was ND組成叢集,其中4檯安裝了IHS和was app共存。

一.調整RHEL5允許開啟的最大檔案數,系統預設是1024(執行ulimit -n可檢視這個數值)。vi /etc/security/limits.conf加入以下兩行:
* soft nofile 300000
* hard nofile 300000
重新系統後通過ulimit -a可以檢視結果。
優化RHEL5的核心網路引數,參考:http://kyle.itpub.net/post/1626/470964

二.修改IHS的配置檔案httpd.conf(vi /was6/HTTPServer/conf/httpd.conf,這裡/was6是我自己的安裝目錄)

Timeout 15

KeepAlive On

MaxKeepAliveRequests 768

KeepAliveTimeout 10


1.更改KeepAlive的預設值on為off。這個值說明是否保持客戶與HTTP SERVER的連線,如果設定為on,則請求數到達MaxKeepAliveRequests設定值時(預設為100)請求將排隊,導致響應變慢。

2.修改預設執行緒和程式的引數為以下設定:
# worker MPM 

ThreadLimit 128
ServerLimit 60
StartServers 6
MaxClients 7680
MinSpareThreads 768
MaxSpareThreads 7680
ThreadsPerChild 128
MaxRequestsPerChild 30000 (0為不限時)

對引數的說明如下:
# StartServers:伺服器啟動時的服務程式數目
# MaxClients:允許同時連線的最大使用者數目
# MinSpareThreads:保有的最小工作執行緒數目
# MaxSpareThreads:允許保有的最大工作執行緒數目
# ThreadsPerChild:每個服務程式中的工作執行緒常數
# MaxRequestsPerChild:服務程式中允許的最大請求數目
注意事項:如果顯式宣告瞭ServerLimit,那麼它乘以ThreadsPerChild的值必須大於等於MaxClients(最好等於MaxClients),而且MaxClients必須是ThreadsPerChild的整數倍,否則Apache將會自動調節到一個相應值(可能是個非期望值)。

3.啟用deflate壓縮模組。deflate壓縮對於網頁的傳輸效果很好,可以大大提高apache的響應效能。將
#LoadModule deflate_module modules/mod_deflate.so
的#去掉(去掉註釋)。
#LoadModule headers_module modules/mod_headers.so
的#去掉(去掉註釋)。
加入:

DeflateCompressionLevel 9
SetOutputFilter DEFLATE

BrowserMatch ^Mozilla/4 gzip-only-text/html 
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSI[E] !no-gzip !gzip-only-text/html

SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:exe|tgz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary

AddOutputFilterByType DEFLATE text/*
AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript
AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp

Header append Vary User-Agent env=!dont-vary

4.減少重複請求。將
#LoadModule expires_module modules/mod_expires.so
的#去掉(去掉註釋)。
加入:

ExpiresActive on
ExpiresDefault "now plus 1 day"
ExpiresByType image/x-icon A2592000
ExpiresByType application/x-javascript. A2592000
ExpiresByType text/css A2592000
ExpiresByType image/gif A604800
ExpiresByType image/png A604800
ExpiresByType image/jpeg A604800
ExpiresByType text/plain A604800
ExpiresByType application/x-shockwave-flash A604800
ExpiresByType video/x-flv A604800
ExpiresByType application/pdf A604800
ExpiresByType text/html A300

5.關閉日誌記錄。將
CustomLog logs/access_log common
註釋掉,字首加#變成
#CustomLog logs/access_log common

三.更改Web容器執行緒池:該引數在管理控制檯裡的“伺服器→應用程式伺服器→server1→執行緒池”的“WebContainer”中進行設定,將“最大大小”的預設值50改成40,“最小大小”的預設值10改成40,不要勾選“允許執行緒分配超過最大執行緒大小”。逐一對每個成員做相應的修改。注意:叢集成員數×Web容器執行緒池大小<=oracle processes。

四.更改會話超時和啟用servlet快取記憶體:該引數在管理控制檯裡的“伺服器→應用程式伺服器→server1→會話管理”的“會話超時”中進行設定,將預設的30改成15;在“伺服器→應用程式伺服器→server1→Web容器設定→Web容器”裡勾選“啟用servlet快取記憶體”。逐一對每個成員做相應的修改。

五.更改JVM引數:該引數在管理控制檯裡的“伺服器→應用程式伺服器→server1→程式定義→Java虛擬機器”裡定義,將“初始堆大小”改成1000,“最大堆大小”改成2000,“通用 JVM 引數”裡填入“-Xgcpolicy:gencon -Xnoclassgc”,儲存後,在“伺服器→應用程式伺服器→server1→程式定義→程式執行”裡將“程式優先順序”的預設值20改成0。(注意:IBM流派32位系統的JVM最大值不超過1024m(64位允許最大2000m),如果有充足的記憶體,可以多建立幾個節點叢集成員)。逐一對每個成員做相應的修改。

六.更改ORB服務:進入管理控制檯裡的“伺服器→應用程式伺服器→server1→ORB服務”,勾選“按引用傳遞”;執行緒池設定則選擇“使用與執行緒池管理器相關聯的 ORB.thread.pool 設定(建議)。”,點選“ORB.thread.pool”,修改“最小大小”的預設值10為40,“最大大小”的預設值50為40,不要勾選“允許執行緒分配超過最大執行緒大小”。逐一對每個成員做相應的修改。

七.設定每個叢集成員的分散式會話為無,犧牲每個成員的故障導致登出重新登入來換取效能的提高(備註:如果分散式會話為記憶體到記憶體複製,則某一個叢集成員發生故障,使用者是感覺不到的,不用登出後再登入)。進入管理控制檯裡的“伺服器→應用程式伺服器→server1→會話管理→分發環境設定”,勾選無。逐一對每個成員做相應的修改。

八.去除應用程式的類重新裝入選項:進入管理控制檯裡的“應用程式→企業應用程式”,點選某一應用程式進入,點選“Web模組的 JSP 重新裝入選項”,將“JSP啟用類重新裝入”的勾去掉。

【轉】http://blog.itpub.net/post/1626/466525/

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14184018/viewspace-755503/,如需轉載,請註明出處,否則將追究法律責任。

相關文章