来自官方的BoneCP文档:http://jolbox.com/index.html?page=http://jolbox.com/configuration.html
但这还不是很清楚,也没有很好的例子。我正在运行一个正常的Web服务,同时存在0-500个线程。哪个值高,为什么?
最佳答案
因此,BoneCP在内部具有连接池的分区数。每次线程尝试使用连接时,它都需要thread.getId() % partitionCount
并使用该池中的连接。这样一来,您的连接总数将达到maxConnectionsPerPartition * partitionCount
。
为什么这会对性能产生积极影响?最好不要让两个线程同时在同一个连接上使用(显然这很不好),BoneCP必须采取锁定措施才能释放或获取连接。但是同时,所有其他希望执行相同操作的线程都必须等待该锁。因此,从某种意义上讲,您可以并行释放或获取partitionCount
个连接。
设置为哪个数字?我认为内核数量是一个不错的开始,因为无论如何您都不会并行进行更多工作。但是除此之外,还要尝试预测将争夺连接,度量和重复的线程数量。
顺便说一句,世界上大多数国家已经依赖c3po十多年了,而实际上分区数已设置为1。因此,您一定不会犯错。