Posted on 2007-04-20 13:06
dennis 閱讀(3783)
評論(0) 編輯 收藏 所屬分類:
java
最近項目的websphere經常當機,運行一段時間后變慢然后當掉。查找了下網上的資料,盡管不是我在負責服務器,但是也是個學習的機會。
主要針對的癥狀:
平臺:was5.1 base,http server 1.3.28,oracle 8i,9i
癥狀:用戶響應突然變慢,然后并連接不上80端口,重啟后正常,一段時間后反復
解決方式:調整服務器參數,增加服務器的處理能力
1,更改http server的配置文件參數KeepAlive。
原因:這個值說明是否保持客戶與HTTP SERVER的連接,如果設置為ON,則請求數到達MaxKeepAliveRequests設定值時請求將排隊,導致響應變慢。
方法:打開ibm http server安裝目錄,打開文件夾conf,打開文件httpd.conf,查找KeepAlive值,改ON為OFF,其默認為ON
2,更改http server的配置文件參數ThreadsPerChild值到更大數目,默認為50
原因:服務器響應線程的數量
方法:打開ibm http
server安裝目錄,打開文件夾conf,打開文件httpd.conf,查找ThreadsPerChild值,默認為50,改到更大數目,視用戶數
多少而定,一般改到客戶機數量的1.1倍,如200臺,則設為220
3,關閉http server日志紀錄
原因:http server的日志IO影響性能
方法:打開ibm http
server安裝目錄,打開文件夾conf,打開文件httpd.conf,查找CustomLog值,找到沒有注釋的那行(行的開頭沒有符號"#"),
將那行用符號"#"注釋掉,以關閉日志紀錄,提高處理性能。
4,更改Websphere的服務器處理線程數
原因:線程的數量影響同時并發的請求數量
方法:打開管理控制臺,依次打開目錄樹,服務器->server1->web容器->線程池,修改"最大大小"的值,默認是50,改到
更大數目,具體視總用戶數量和機器的配置而定,一般設置其等于或小于http server設置的MaxKeepAliveRequests的值。
根據上面的建議,查看了下我們的服務器配置情況,倒是沒什么不同,實際上導致服務相應變慢到停止,一般是由兩個原因導致的
1,數據庫操作時間過長(如查詢),導致占用連結時間過長,然后后續請求無法及時取得連結響應請求
2,代碼中一定要確保連結關閉,尤其在jsp中。后臺程序要在finally中關閉
由此,我查看了System.out的日志,發現每次在當機前都有報“連接郵件服務器失敗”類似的錯誤,我們的郵件服務器是ibm的Lotus Domino,最近的網絡狀況很有問題,個人懷疑是因為連接郵件服務器時間過長,導致了這種情況的發生,有待證實。