我有一個運行在Tomcat 7上的Java web應用程序,它使用JDBC連接到Oracle 11g數據庫。該應用程序包含一個JSP,它使用JQuery向一個將數據插入數據庫的servlet發出Ajax請求(使用.post函數)。當系統負載很輕時,我開始看到數據庫中的空閒連接。我通過在SQL Developer中檢查v $ session來觀察它們。當我們運行性能測試時,它在大約2分鐘內用150個連接最大化了數據庫服務器。我多次訪問過我的代碼,並且始終關閉所有ResultSets,Statements和Connections中的finally代碼塊。當JSP同時提交多個Ajax請求時,問題就出現了,這讓我認爲這可能是一個多線程問題,但是,我一直在關注我的代碼,並且沒有跨線程共享數據。從數據源獲取連接並關閉連接的代碼位於所有DAO類繼承的抽象基類中。有沒有人有任何想法可能會導致這種情況?由於涉及很多類,我不確定要發佈什麼源代碼;讓我知道如果你想看到任何。謝謝你的幫助。爲什麼關閉它們後JDBC連接保持打開狀態?
0
A
回答
0
嘗試將maxWait設置爲10000並觀察超時。這將表明您的Web應用程序的某些組件未關閉數據庫連接。
另外,試着限制maxActive到15,看看它是如何影響你的應用程序和Oracle中同時打開的連接數的。
+0
實際上,我們最終將maxWait設置爲-1,將maxIdle設置爲2,這似乎解決了問題。當系統負載很重時,它確實創建了額外的連接,但它們很快就會消失。 – jg8273
相關問題
- 1. SQLCE連接:讓它們保持打開狀態或讓它們關閉?
- 2. Oracle JDBC連接緩存,連接長時間保持打開狀態,並最終無法關閉它
- 3. 爲什麼我應該關閉或保持Redis連接打開?
- 4. Node.js + Oracle - 每次請求後都保持連接打開或關閉狀態?
- 5. 連接未關閉。連接的當前狀態爲打開
- 6. 連接未關閉,連接的當前狀態爲打開
- 7. 打開它後關閉mongo/mongolian連接?
- 8. 爲什麼我的導航抽屜認爲它已關閉,但在旋轉後仍保持打開狀態?
- 9. 關閉窗口後進程保持打開狀態
- 10. 關閉VBA後,Textstream對象在Excel中保持打開狀態
- 11. 關閉瀏覽器後讓PHP cookies保持打開狀態
- 12. DataList綁定:「連接未關閉,連接的當前狀態爲打開狀態。」
- 13. 調試錯誤後,SSH連接保持打開狀態
- 14. 使div打開/關閉狀態持續
- 15. 連接未關閉。連接的當前狀態已打開。 C#
- 16. 連接未關閉連接當前狀態已打開
- 17. 連接未關閉。連接的當前狀態已打開。 //新
- 18. Postgresql連接在JDBC關閉後保持空閒
- 19. TCPClient似乎不維持保持連接狀態,爲什麼?
- 20. 關閉應用程序後保持開關按鈕的狀態
- 21. 爲什麼java.net.DatagramSocket支持「連接」狀態?
- 22. VB.NET - 程序退出後控制檯進程保持打開狀態。我如何正確關閉它們?
- 23. 連接未關閉。該連接的當前狀態爲開放
- 24. Python - 如何關閉端口保持打開狀態?
- 25. 爲什麼TCP連接在使用AT命令從Adruino GPRS連接到xively時保持關閉狀態?
- 26. qTip保持打開狀態
- 27. 爲什麼顯示:block css暫時保持打開狀態
- 28. 響應標頭 - 連接:保持活動狀態,關閉
- 29. 在jdbc中用mysql連接連接後如何保持結果打開?
- 30. 預加載HTML5視頻使連接保持打開狀態
什麼是您的連接池設置? – Olaf
你有使用連接池(DBCP)嗎? –
這是在Tomcat中的server.xml:logAbandoned = 「真」 maxActive = 「50」 了maxidle = 「2」 MAXWAIT = 「 - 1」 removeAbandoned = 「真」 removeAbandonedTimeout = 「10」 – jg8273