【问题标题】:Hazelcast partition counts and thread concurrencyHazelcast 分区计数和线程并发
【发布时间】:2016-05-11 02:54:12
【问题描述】:

Master Hazelcast 电子书中的“17.4.1. Partition-aware Operations”下指出:

为了执行分区感知操作,创建了一个操作线程数组。

单个操作线程执行多个分区的操作;

每个分区只属于1个操作线程。

假设我在一个 17 节点集群上默认有 271 个分区,每个集群有 16 个分区线程。将分区分布在集群中,这意味着所有分区都将有一个与之关联的线程,并且每个线程将只有 1 个分区(对我来说似乎是最佳情况)。

忽略备份和近缓存,当我创建 IMap 实例时,这是否意味着我只能在集群中的每个映射分区上执行 1 个并发 put/get 操作?更进一步,如果我附加一个 MapStore,这是否意味着我只能对我的后端数据库运行 271 个并发操作,因为无法创建异步 MapStore?

我问这个问题的原因是我有一个高度并发的 Web 应用程序,我最近将数据存储切换为在它前面运行 Hazelcast IMap。该应用程序接受数以千计的并发连接,并且几乎每个请求都至少从分布式映射中执行一次 get 操作。我看到很多这样的错误:

com.hazelcast.core.OperationTimeoutException: No response for 20000 ms. Aborting invocation! Invocation{serviceName='hz:impl:mapService', op=com.hazelcast.map.impl.operation.GetOperation{identityHash=1003806362, serviceName='hz:impl:mapService', partitionId=244, replicaIndex=0, callId=55212219, invocationTime=1462913274676 (Tue May 10 20:47:54 UTC 2016), waitTimeout=-1, callTimeout=10000, name=..., name=...}, partitionId=244, replicaIndex=0, tryCount=250, tryPauseMillis=500, invokeCount=1, callTimeout=10000, target=Address[10.0.2.221]:5701, backupsExpected=0, backupsCompleted=0, connection=Connection [/10.0.2.219:5701 -> /10.0.2.221:14565], endpoint=Address[10.0.2.221]:5701, alive=true, type=MEMBER} No response has been received! backups-expected:0 backups-completed: 0

这可能仅仅是因为 MapStore 在尝试从数据库中获取数据时阻塞了分区线程吗?我还应该注意,虽然它说 No response for 20000 ms,但 20 秒还没有过去。

我在 Java 8 上运行 Hazelcast 3.6.2。

【问题讨论】:

  • 您是否因 20 秒超时而不是通常的 2x60 秒而更改了 hazelcast.operation.call.timeout.millis。

标签: java hazelcast


【解决方案1】:

忽略备份和近缓存,当我创建 IMap 实例时,这是否意味着我只能在集群中的每个地图分区上执行 1 个并发 put/get 操作?

正确。因此可能是映射 a 和映射 b 的分区 25 正忙于处理映射 b 的操作,因此映射 a 的操作需要等待。

更进一步,如果我附加一个 MapStore,这是否意味着我只能对我的后端数据库运行 271 个并发操作,因为无法创建异步 MapStore?

对于通过 mapstore 进行写入 --> 是的。但我对 writebehind(异步)mapstores 线程模型并不熟悉。

这可能仅仅是因为 MapStore 在尝试从数据库中获取数据时阻塞了分区线程吗?我还应该注意,虽然它说 20000 毫秒内没有响应,但 20 秒还没有过去。

这很可能是原因。

【讨论】:

    猜你喜欢
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    • 1970-01-01
    • 2012-06-16
    相关资源
    最近更新 更多