oracle連接由於防火牆設置導致超時的問題


    當應用程序使用數據庫連接池進行數據連接時,防火牆的設置有可能會導致連接出現超時或者被重置的問題。當從數據庫讀數據的時候 有可能會 Connection timed out, 這是由於應用會緩存數據連接,當要訪問數據庫的時候,但是這個時候緩存的數據庫連接有可能因為防火牆設置已經超時或者被數據庫干掉了。

問題描述:

    系統割接后,中間件和數據庫進行了防火牆隔離,由於數據庫和應用都進行了割接,系統架構由原先的單一網絡變成了跨系統部署,數據庫和應用之間的訪問通過防火牆;而防火牆這邊對空閑的連接配置了超時時間(一般默認為30分鍾),一旦超過時間,會自動將連接斷掉;而斷掉后,應用程序這一側的數據庫連接池這邊還是認為該連接有效,它只在應用獲取該連接時才會進行一個有效性測試,會每間隔一個時間嘗試一次,嘗試n次后才確定該連接失效,發起重連,最終造成業務耗時長。

    由於連接池連接數很多,勢必造成有部分連接空閑時間超過了防火牆的設置,而應用程序這邊沒有配置對空閑連接的維護參數,空閑連接會一直認為有效,所以該現象只會出現在連接池中的空閑連接上;當應用獲取已被防火牆斷開的空閑連接時,就會造成應用的響應慢,或者直接提示 connection timed out 異常。

解決辦法:

針對該現象,解決方案一般有以下幾個:

1、對連接池這一塊的參數進行優化,增加對空閑連接的未使用超時和時效超時(小於防火牆的配置),優化現有連接有效性測試的相關次數和間隔時間配置,使得應用側從連接池中獲取到的連接均有效,避免因長時間沒有進行數據操作被防火牆kill掉;

2、取消防火牆中對於數據庫連接的超時設置。

更詳細的描述和此類問題的說明文章可以參見如下

http://www.ibm.com/developerworks/cn/aix/library/0808_zhengyong_tcp/index.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM