我有一個WebAPI服務使用ODP.NET連接到多個Oracle數據庫。通常,網絡服務會每秒打幾次,永遠不會長時間處於不活動狀態。然而,在我們的測試網站中,我們沒有使用它2-3天。今天早上,我們遇到了服務,並從ODP.NET中獲得了「連接請求超時」異常,這表明連接池沒有可用的連接。使用後我們正在關閉連接。該服務在這段時間之前工作正常,但今天第一個查詢得到超時異常。我們在IIS中的應用程序池配置爲永不重置。ODP.NET連接池問題 - 數據庫關閉後的容錯問題
我的問題是,什麼會導致連接池在一段時間不活動後填充不良連接,而這些連接在通常的3分鐘週期內沒有清理?它只發生在我們三個數據庫中的兩個中,並且爲所有數據庫都設置了Validate Connection = true。
EDIT 所以談話的DBA後,存在之間的連接/會話被手動地或通過超時和數據庫服務器切斷所述TCP連接殺死一些不同。在這種情況下,TCP連接作爲常規備份的一部分被切斷(爲什麼對此不重要)。我想這發生在整個數據庫服務器一次下線時。問題的依據仍然適用我認爲雖然:爲什麼ODP.NET無法清理中斷連接超時?有一個表示「Stasis」連接的性能計數器,那些連接是否可以卡在該狀態?我會認爲它應該能夠看到連接不再處於活動狀態(Validate Connection = True),將其殺死並且不會將其返回到池中。
當然,這個問題可以通過重置應用程序池來解決數據庫關閉的所有問題。我仍然希望將ODP.NET連接池配置爲更容錯。
您使用ODP.NET託管或非託管驅動程序? – metalheart
我正在使用非託管驅動程序。 – ChoptimusPrime