2012-12-08 46 views
3

我的应用程序中只有一个地方使用连接。
它看起来是这样的:
Play Framework 2.0.4和BoneCP - 如何避免连接泄漏?

Connection conn = Db.getConnection(); 
try 
{ 
    // do some job 
} 
finally 
{ 
    conn.close(); 
} 

所以,连接始终关闭。
但一段时间后我总是得到更多的连接比bonecp配置定义...

问:
是否有这个问题澄清溶液?
可能是我应该尝试玩框架2.1?

我真的不能让一些人如何使用没有问题,框架...

配置:

 
db.default.autocommit=true 
db.default.isolation=READ_COMMITTED 

db.default.partitionCount=3 
db.default.minConnectionsPerPartition=6 
db.default.maxConnectionsPerPartition=12 
db.default.acquireIncrement=1 

db.default.acquireRetryAttempts=5 
db.default.acquireRetryDelay=50 milliseconds 

db.default.connectionTimeout=50 milliseconds 
db.default.idleMaxAge=3 minutes 

db.default.idleConnectionTestPeriod=0 
db.default.initSQL="SELECT 1" 

db.default.logStatements=true 
db.default.maxConnectionAge=10 minutes 

db.default.releaseHelperThreads=0 

谢谢!

回答

0

我的理解是,conn.close()并没有真正关闭连接。相反,它将连接释放回连接池。连接池总是试图将minConnection(每个分区为6)分配给数据库。

这可能是“总是获得更多连接”的原因,但这是它应该工作的方式。

+0

是的,conn.close()不关闭连接,但将其返回给池。 你没有得到这个问题:我配置骨骼TCP使用最大N个连接,但它使用更多,比N. –

1

另请看poolThreshold参数。默认情况下,它被设置为所有连接的20%(在版本< 0.8中,我将它从0.8和更高默认为零,因为它让很多人感到惊讶)。

华莱士

+0

感谢您的建议,但它没有帮助。我配置骨骼CP使用最多24个连接,但在10小时后,它使用全部50个可用... –

+0

您使用的是什么版本的BoneCP?最新版本目前是:0.8.0-rc1 – wwadge

+0

我使用BoneCP 0.7.1附带的play framework 2.0.4 :)目前我通过每隔几个小时重新启动服务器来解决我的问题。不管怎样,谢谢! –

0

尝试BoneCP 0.8.0-RC1和使用这种配置:

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

你能解释为什么这会有所帮助吗? – cdmckay

0

我已经在亚马逊部署我的网站后,面临着同样的问题。

试行方案1

使用

Connection conn = Db.withConnection(); //instead of DB.getConnection() 

如果不是使用最新版本BoneCp并在SBT添加此不起作用。 (显然出现了与BoneCP处理连接的方式的问题。)

val appDependencies = Seq(
"com.jolbox" % "bonecp" % "0.8.0-rc2-SNAPSHOT-20130712-14382677.jar", 
.... 

val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).settings(
    libraryDependencies += "com.jolbox" % "bonecp" % "0.8.0-rc2-SNAPSHOT-20130712-14382677.jar" from "https://dl.dropboxusercontent.com/u/36714110/libraries/bonecp-patches/bonecp-0.8.0-rc2-SNAPSHOT-20130712-14382677.jar" 
,resolvers += ... 

请参考boneCPGitHub页提到了这个问题。

请让我知道,如果这可以帮助你。