2012-11-16 64 views
1

我正在使用MYSQL數據庫和基本的JDBC連接池來連接數據庫。應用程序部署在tomcat服務器中。幾次操作後,數據庫連接變爲空。爲什麼數據庫連接在幾次之後失敗

任何人都可以讓我知道原因嗎?

+1

請發佈您的代碼 – Asaph

+0

「因爲」。你是否期望我們能夠只是猜測問題是什麼,因此你基本上給了我們絕對沒有任何有用的代碼或描述的方式?基本上:「它壞了,修理它!」 –

+0

也請發佈實際的錯誤 –

回答

0

造成這種情況的一些不同的原因:

  1. 不調用您Connection資源close()當你與他們所做的。在所有Connection發出並未關閉後,這可能會導致連接池耗盡。
  2. 不止一次在您的Connection資源上調用close()。關閉Connection將其返回到池,以便另一個線程可以抓取它。如果您第二次致電close(),您現在已經關閉了其他線程。
  3. 您的代碼實際上是將您的Connection實例設置爲null某處。
  4. 您正在離開Connection資源,並且閒置時間過長,並且已超時。如果您的代碼在查詢之間有一些長時間運行的操作,請考慮關閉Connection並在查詢之間獲取新代碼。
  5. 數據庫服務器由於某種原因關閉了連接,並且連接池不知道它。爲了緩解這種情況,您可以配置連接池以進行借用測試。這基本上會在連接上發出測試查詢,以確保它在將它交給您的應用程序之前保持活動狀態。注意:那裏有一些開銷。