BoneCP创建了太多连接。统计数据给出了负数

时间:2013-11-21 03:31:28

标签: mysql bonecp

[BoneCP Version : 0.8.0.RELEASE]
[Guava Version : 11.0.2]

我使用guice-mybatisbonecp作为数据源提供程序。我已经用getConnection()覆盖了MySQL驱动程序,以便在mysql master和slave之间进行旋转。我看到boneCP创建的连接数多于应用程序所需的连接数。考虑到QPS,我们有10个活动连接应该已经足够但是创建了超过30个。此外,bonecp统计数据给出了负数:

[Format]
Cluster = pool.getTotalCreatedConnections()|pool.getTotalFree()|pool.getTotalLeased() 

[ Data ]
cluster[1]=10|44|-34,
cluster[2]=10|50|-40,
cluster[3]=-28|0|-28,
cluster[4]=10|45|-35,
cluster[5]=10|49|-39,
cluster[6]=10|50|-40,
cluster[7]=10|46|-36,
cluster[8]=10|34|-24,


Following are my bonecp configurations :
        bonecp.connectionTestStatement = "SELECT now()"
        bonecp.partitionCount = 1
        bonecp.maxConnectionsPerPartition = 50
        bonecp.minConnectionsPerPartition = 10
        bonecp.acquireIncrement = 1
        bonecp.idleConnectionTestPeriod = 60
        bonecp.timeUnit = SECONDS
        bonecp.idleMaxAge = 10
        bonecp.poolAvailabilityThreshold = 1
        bonecp.maxConnectionAgeInSeconds = 10
        bonecp.acquireRetryDelayInMs = 500
        bonecp.acquireRetryAttempts = 10

从netstat我看到ESTABLISHED连接的总数等于所有集群的pool.getTotalFree()的总和。

注意:我有另一个db [oracle]我正在使用bonecp而不会遇到这个问题。唯一的区别是我们没有包装驱动程序,并且不需要在getConnection()请求的不同主机上进行轮换。

我在使用C3P0之前转向BoneCP,我们遇到了性能问题,但统计数据很好。 我正在阅读源代码以确定根本原因。

0 个答案:

没有答案