Heroku/Play/BoneCp connection issues

radu-- picture radu-- · Mar 18, 2013 · Viewed 8.3k times · Source

I have an app on heroku that uses play. It was working fine for the longest time, but somewhat recently I started getting this:

Caused by: java.sql.SQLException: Timed out waiting for a free available connection.
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:169) ~[hibernate-core-4.1.9.Final.jar:4.1.9.Final]
at com.jolbox.bonecp.BoneCP.getConnection(BoneCP.java:503) ~[bonecp-0.7.1.RELEASE.jar:0.7.1.RELEASE]

which is caused by

org.postgresql.util.PSQLException: FATAL: too many connections for role "ejmatdbwywaugk"

Now this is pretty obviously a connection leak, except that I'm using JPA.em(). The Play examples never close an entity manager obtained like this. I tried closing it, but then the app blows up saying the entity manager is closed.

Any ideas?

Answer

Marco picture Marco · Mar 19, 2013

Try with BoneCP 0.8.0-rc1 and use this configuration:

db.default.idleMaxAge=10 minutes
db.default.idleConnectionTestPeriod=30 seconds
db.default.connectionTimeout=20 second
db.default.connectionTestStatement="SELECT 1"
db.default.maxConnectionAge=30 minutes