Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Connections ist manchmal in c3p0 nicht verfügbar

Sie haben sehr wahrscheinlich ein Verbindungsleck. Eine gigantische Poolgröße wird da nicht wirklich helfen. Siehe hier .

Anhang:Robust Resource Cleanup Idiom

Wenn Sie können, verwenden Sie am besten versuchen Sie es mit Ressourcen . Wenn Sie jedoch mit einer älteren Version von Java (vor Java 7) oder mit Ressourcen arbeiten, die AutoCloseable nicht implementieren Möglicherweise müssen Sie immer noch auf diese Art von Dingen zurückgreifen.

Connection c     = null;
OtherResource or = null;

try
{
   c  = cpds.getConnection();
   or = getOtherResource()

   // do stuff
   // ...
}
finally
{
  try { if (or != null) or.close(); }
  catch (Exception e) { e.printStackTrace(); }

  try { if (c != null) c.close(); }
  catch (Exception e) { e.printStackTrace(); }
}

Beachten Sie, dass die finally-Klausel definitiv ausgeführt wird, wenn die Connection erworben wird, und dass es für jede Ressource einen bestmöglichen Versuch gibt, close() zu schließen:If or kann nicht geschlossen werden (), verhindert diese Ausnahme nicht den Versuch, die Verbindung zu schließen ().

Sie müssen sehr vorsichtig sein. Wie Keynes es berühmt ausdrückte, gibt es viele Ausrutscher zwischen Tasse und Lippe.