關於客戶端長時間自動斷開的問題

我先描述一下環境和問題

環境:服務器:IBM P570 AIX5.3    庫:oracle 10G 做的雙節點的rac   2層架構,c/s模式,客戶端直連數據庫,沒有中間件緩衝池,服務器模式爲專有模式(DEDICATED)。還有就是我們的用戶都是走的內網,不對外提供服務,因爲是醫院,客戶端都是醫生、護士用的。

問題描述:客戶端連接數據庫後,如果沒有任何操作10分鐘左右自己斷開連接。

1、數據庫:我看了oracle的profile,走的是default, IDLE_TIME是unlimited,所以初步判斷不是庫的問題   (難道庫還有別的配置能限制?)
2、應用:諮詢了此應用專業人士,說應用沒有做過任何斷開的策略限制
3、網絡:我們的匯聚沒有做過這樣的策略


因爲排除了profile的原因,懷疑可能是服務器或者網絡的問題:

先說服務器:在網上找了很多的資料,主要是兩個地方可能會限制:

etc/profile配置文件的TMOUT參數  2、通過no -a|grep idle 查看tcp_keepidle    發現這兩個地方都沒問題的

網絡:雖然我不知道是哪裏有策略,但是我覺得可能就是網絡的問題,在哪個交換機上或者AIX小機上有策略,幹掉長時間空閒的網絡連接,提高網絡利用率的



最後在網上發帖子,找到了方法:利用oracle的DCD(Dead Connection Detection)機制,避免oracle會話被防火牆強制斷開

就是修改network/admin/sqlnet.ora文件

加入:sqlnet.expire_time = 5

這個參數的意思是  oracle每隔5分鐘會向所有oracle的客戶端發送一個10字節的空包,這樣這個鏈接就不是空閒的了,也就不會被防火牆策略幹掉了.


這個是當時我發的帖子:http://www.itpub.net/thread-1823581-3-1.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章