出于测试目的,我想在单个节点上运行多个Hazelcast实例。 Hazelcast假设它正在管理整个节点,因此它创建了足够多的线程来完全(事实上,超过)加载所有核心。在我的8核Linux节点上,Hazelcast为每个实例创建了74个线程,这些线程很快就会遇到用户线程限制。 (是的,我知道可以使用ulimit
更改此内容。)
从jconsole线程视图:
通过设置Hazelcast system properties:
可以减少部分线程数hazelcast.operation.generic.thread.count
hazelcast.operation.thread.count
hazelcast.io.thread.count
hazelcast.event.thread.count
wan,generic-operation和partition-operation线程的默认数量都是2 x CPU核心数。似乎没有任何方法可以减少wan线程数。
有没有办法指定Hazelcast应该使用多少核心,而不是分别指定generic-operation.thread
和partition-operation.thread
?设置CPU关联不起作用,因为Hazelcast仍然认为它可以访问所有核心。
有没有办法改变WAN复制线程的数量?
答案 0 :(得分:1)
默认情况下,对于Hazelcast 3.4,分区操作线程计数将是1x核心数。
除了这些属性之外,没有选项可以配置操作线程数。
AFAIK无法更改wan复制线程的数量,因为它被硬编码为:ExecutorConfig.DEFAULT_POOL_SIZE。
一个没有做任何事情的线程,非常便宜。 OS调度程序不会安排它;只需跟踪数据。