3

연결을 사용하는 앱이 한 곳 있습니다.
Play Framework 2.0.4 및 BoneCP - 연결 누출을 피하는 방법은 무엇입니까?

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

가 그래서 연결이 항상 닫혀 :
는 그것은 다음과 같이 보입니다.
그러나 시간이 후 난 항상 더 많은 연결 bonecp 설정에 정의 된 것보다을 얻을 ...

질문 :
그 문제에 대한 명확한 해결책이 있습니까?
5 월 프레임 워크 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()가 실제로 연결을 닫지 않습니다. 대신 연결 풀로 다시 연결을 해제합니다. 연결 풀은 항상 파티션 당 최소 6 개의 minConnection을 데이터베이스에 연결하려고 시도합니다.

이것은 "항상 더 많은 연결을 얻습니다"라고하는 이유 일 수 있습니다. 그러나 이것이 작동해야하는 이유입니다.

+0

예, conn.close()가 연결을 닫지는 않지만 풀로 되돌립니다. 문제가 발생하지 않았습니다. 최대 N 개의 연결에서 사용하도록 boneCP를 구성했지만 N보다 더 많이 사용합니다. –

1

또한 poolThreshold 매개 변수를 확인하십시오. 기본적으로이 값은 모든 연결의 20 %로 설정됩니다 (버전이 < 0.8입니다. 많은 사람을 놀라게하기 때문에이 값을 0.8 이상으로 기본값으로 설정했습니다).

월러스

+0

조언을 주셔서 감사하지만 도움이되지 않습니다. 최대 24 개의 연결에서 사용하도록 boneCP를 구성했지만 10 시간 후에는 사용 가능한 모든 50 개의 번호를 사용했습니다. –

+0

어떤 버전의 BoneCP를 사용하고 있습니까? 최신 버전은 현재 : 0.8.0-rc1 – wwadge

+0

BoneCP 0.7.1과 함께 제공되는 플레이 프레임 워크 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

내가 아마존에 내 웹 사이트를 배포 한 후 동일한 문제에 직면 한을.

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

최신 BoneCp 버전을 사용하고 SBT이 추가보다 문제가 해결되지 않으면

시험 방법 1

사용. (분명히 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 페이지를 참조하십시오.

그리고 이것이 도움이되는지 알려주세요.