我有一個託管在IIS 7上的Web應用程序,使用Oracle.DataAcess.dll for .NET執行到Oracle數據庫的連接和查詢。 在上週,我們突然遇到了這個組件拋出的無數錯誤,說:「連接請求超時。」。ODP.NET連接請求超時
經過幾個小時的調試,我發現錯誤確實表明連接請求超時,並且拋出錯誤碼爲:-1000(在oracle.DataAccess中,沒有引發ORA錯誤)。 在Oracle數據庫中,我看到該計算機只有一個連接,並且處於「非活動」狀態。 儘管只有一個連接,但在調試時它實際上在嘗試打開連接時超時。
我們不使用連接池策略,但正如我在調試模式下看到的那樣,有一個默認連接池(即使未指定值時)說最大連接數爲100,超時值爲15秒,並且生命週期爲0.這意味着該機器上的應用程序可以處理100個連接。
這樣說,我不明白爲什麼我會得到「連接請求超時」。錯誤,錯誤代碼= -1000,當我的應用程序可以創建多達100個連接(根據默認連接池的設置),但我的數據庫只顯示少量連接(發生在我的應用程序有一個連接和5個連接時發生 - 100)。
我會注意到,我可以專門回收我的應用程序後,要解決這個問題,但是這已經發生了不止一次,所以這是不是該解決方案...
是的東西我失蹤?
我的應用程序實際上是否使用了比我看到的更多的連接?
*更新: 我調試過程中發現有被困在Oracle.DataAccess和許多其他線程的「PopulatePool」方法是停留在「WaitForRegularConnection」的方法多線程...
這是間歇性發生的還是所有的時間? – Gilles
它間歇性地發生......每隔幾個小時,我的服務器上就會發生這種情況。 –
請啓用調試跟蹤並共享信息。 TraceLevel 2(連接池統計)就足夠了。 http://docs.oracle.com/cd/B28359_01/win.111/b28375/featDebug.htm –