天天看點

應用長時間未調用後再次調用出現hang的情況

        之前某應用就存在長時間不調用,再次調用時處于hang,等待10分鐘傳回3113的連接配接錯誤。今天正好同僚也問了個相同的問題,也是應用長時間不調用就出現這種情況。

        以前對于這種問題進行過排查,但一直未解決,針對今天的這個系統的問題,還是按照老方法檢查,

1. 檢查應用日志,确實長時間等待後報3113的錯誤。

2. 檢查資料庫的PROFILE中idle_time參數,此處設定的是DEFAULT的UNLIMITED,說明逾時不會是由資料庫使用者PROFILE配置導緻的。

3. 檢查網絡環境,因為這個應用是從一個網段通路另一個網段的資料庫,咨詢網絡中心後,中間有一個防火牆,确實也有逾時的設定,是40分鐘,也就是應用連接配接空閑40分鐘後,就會自動kill連接配接。

        問題找到了,為了解決這個問題,其實方法也有很多:

1. 寫個腳本定時調這個應用,保證40分鐘内有調用,就不會出現逾時的問題了。

2. 通過Oracle的一些機制自動探測資料庫連接配接來間接保證40分鐘内應用有調用。

另外老熊也有一篇非常好的文章推薦:http://www.laoxiong.net/oracle_and_firewall.html。

都是值得反複玩味體會的。