减少Hazelcast线程的数量

时间:2014-12-10 17:37:29

标签: hazelcast

出于测试目的,我想在单个节点上运行多个Hazelcast实例。 Hazelcast假设它正在管理整个节点,因此它创建了足够多的线程来完全(事实上,超过)加载所有核心。在我的8核Linux节点上,Hazelcast为每个实例创建了74个线程,这些线程很快就会遇到用户线程限制。 (是的,我知道可以使用ulimit更改此内容。)

jconsole线程视图:

  • hz.hzInstance_1_dev.scheduled
  • hz.hzInstance_1_dev.generic-operation.thread(x16)
  • hz.hzInstance_1_dev.partition-operation.thread(x16)
  • hz.hzInstance_1_dev.response
  • hz.hzInstance_1_dev.event(x5)
  • hz.hzInstance_1_dev.wait-通知
  • hz.hzInstance_1_dev.wan(x16)
  • hz.hzInstance_1_dev.cached.thread
  • hz.hzInstance_1_dev.migration
  • hz.hzInstance_1_dev.IO-thread-in(x3)
  • hz.hzInstance_1_dev.IO-thread-out(x3)
  • hz.hzInstance_1_dev.IO线程接受器
  • hz.hzInstance_1_dev.cached-thread(x8)
  • hz.hzInstance_1_dev.HealthMonitor

通过设置Hazelcast system properties

可以减少部分线程数
  • generic-operation.thread = hazelcast.operation.generic.thread.count
  • partition-operation.thread = hazelcast.operation.thread.count
  • IO-thread = hazelcast.io.thread.count
  • event = hazelcast.event.thread.count

wan,generic-operation和partition-operation线程的默认数量都是2 x CPU核心数。似乎没有任何方法可以减少wan线程数。

有没有办法指定Hazelcast应该使用多少核心,而不是分别指定generic-operation.threadpartition-operation.thread?设置CPU关联不起作用,因为Hazelcast仍然认为它可以访问所有核心。

有没有办法改变WAN复制线程的数量?

1 个答案:

答案 0 :(得分:1)

默认情况下,对于Hazelcast 3.4,分区操作线程计数将是1x核心数。

除了这些属性之外,没有选项可以配置操作线程数。

AFAIK无法更改wan复制线程的数量,因为它被硬编码为:ExecutorConfig.DEFAULT_POOL_SIZE。

一个没有做任何事情的线程,非常便宜。 OS调度程序不会安排它;只需跟踪数据。