BoneCP создает слишком много соединений. Статистика дает отрицательные числа

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

я использую guice-mybatis с bonecp в качестве источника данных-провайдера. Я завернул драйвер MySQL с getConnection() перевернутый, чтобы вращаться через MySQL хозяина и раба. Я вижу, что 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 я вижу, что общее количество УСТАНОВЛЕННЫХ соединений равно сумме pool.getTotalFree() всех кластеров.

ПРИМЕЧАНИЕ: у меня есть другой db [oracle], для которого я использую bonecp, не сталкиваясь с этой проблемой. Разница лишь в том, что мы не обернули драйвер, и нет необходимости выполнять ротацию на разных хостах для getConnection() запрос.

Я использовал C3P0 до перехода на BoneCP, где у нас были проблемы с производительностью, но статистика была в порядке. Я читаю исходный код, чтобы определить причину.

0 ответов

Другие вопросы по тегам