首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >partitionCount在BoneCP中的一个更好的解释

partitionCount在BoneCP中的一个更好的解释
EN

Stack Overflow用户
提问于 2013-01-21 18:41:16
回答 1查看 6.4K关注 0票数 13

来自官方BoneCP文档:http://jolbox.com/index.html?page=http://jolbox.com/configuration.html

partitionCount为了减少锁争用从而提高性能,每个传入连接请求从具有线程关联的池(即poolthreadId % partition_count )中选择一个连接。当你有很多短命线程时,这个数字越高,你的表现就越好。超过某个阈值后,这些池的维护将开始对性能产生负面影响(仅在分区上的连接开始耗尽时)。 默认值: 2,最小值: 1,建议: 3-4 (但非常特定于应用程序)

但它不是那么清楚,也没有一个很好的例子。我正在运行一个普通的web服务,与0-500同时线程。这是一个很好的价值,为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-21 19:08:25

因此,在内部BoneCP有连接池的分区计数数。每次线程尝试使用连接时,它都会接受thread.getId() % partitionCount,并使用来自该池的连接。而且您的连接总数将有maxConnectionsPerPartition * partitionCount数。

为什么这会对业绩产生积极的影响?为了不同时在同一个连接上使用两个线程(显然这是不好的),BoneCP必须使用一个锁来释放或获取连接。但是在同一时间,所有其他想要这样做的线程都必须等待那个锁。因此,在某种意义上,您可以并行地释放或获取partitionCount数量的连接。

要把它设置成什么号码?我认为#的核心是一个好的开始,因为你不会有更多的工作发生在并行方式。但除此之外,还可以尝试预测有多少线程在争夺连接、测量和重复。

顺便说一句,世界上大多数人已经依赖c3po十多年了,而这实际上是将分区数设置为1,所以你不会觉得它很糟糕。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14445129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档