Fel*_*ipe 12 java database bonecp
来自官方BoneCP doc:http://jolbox.com/index.html?page = http://jolbox.com/configuration.html
partitionCount为了减少锁争用并从而提高性能,每个传入连接请求都从具有线程关联性的池(即pool [threadId%partition_count])中选择一个连接.这个数字越高,当你有足够的短期线程时,你的性能会越好.超过某个阈值时,这些池的维护将开始对性能产生负面影响(仅适用于分区上的连接开始耗尽的情况).
默认值:2,最小值:1,推荐值:3-4(但非常适合应用)
但它不是那么清楚,没有一个很好的例子.我正在运行一个普通的Web服务,同时有0-500个线程.这是一个很好的价值,为什么?
Mir*_*ari 19
因此,内部BoneCP具有连接池的分区计数.每次线程尝试使用连接时,它都需要thread.getId() % partitionCount
并使用该池中的连接.而且你将拥有maxConnectionsPerPartition * partitionCount
多个连接.
为什么这会对性能产生积极影响?好吧,没有两个线程同时在同一个连接上使用(显然这会很糟糕),BoneCP必须锁定才能释放或获取连接.但同时所有其他想要做同样事情的线程都必须等待锁定.因此,从某种意义上说,您可以partitionCount
并行释放或获取多个连接.
设置它的号码是多少?我认为核心数量是一个良好的开端,因为无论如何你都不会有更多的工作并行发生.但除此之外,试图预测将有多少线程竞争连接,测量和重复.
顺便说一下,世界上大多数人已经依赖c3po超过十年了,基本上将分区数设置为1.所以你不能错过它.