我正在使用Hazelcast版本3.3.1。
我有一个使用c3.2xlarge服务器的aws上运行的9节点集群。
我正在使用分布式执行程序服务和分布式映射。
分布式执行程序服务使用单个线程。 分布式映射配置为不使用复制,也不使用近缓存,并使用Kryo序列化程序存储大约1百万个大小为1-2kb的对象。
我的用例去如下:
Hazelcast - OperationTimeoutException
- 所有9个节点不断地对分布式执行服务执行同步远程操作,并且产生约每秒20K命中(约〜每节点2K)。
- 使用Hazelcast API执行调用:com.hazelcast.core.IExecutorService#executeOnKeyOwner。
- 每个操作访问拥有分区的节点上的分布式映射,使用存储的对象进行一些计算并将该对象存储到映射中。 (为此,我使用IMap对象的get和set API)。
Every在一段时间一次Hazelcast遇到超时异常如:
com.hazelcast.core.OperationTimeoutException:为120000毫秒无响应。中止调用! BasicInvocationFuture {invocation = BasicInvocation {serviceName ='hz:impl:mapService',op = GetOperation {},partitionId = 212,replicaIndex = 0,tryCount = 250,tryPauseMillis = 500,invokeCount = 1,callTimeout = 60000,target = 172.31.44.2]:5701,backupsExpected = 0,backupsCompleted = 0},response = null,done = false}没有收到响应!备份 - 预期:0备份 - 完成:0
在某些情况下,我看到地图分区开始迁移,这使事情更糟糕,节点不断离开并重新加入集群,我唯一能解决问题的方法是通过重新启动整个群集。
我想知道什么可能会导致Hazelcast阻止120秒的地图获取操作?
我很确定它不是网络相关的,因为在同一台服务器上的其他服务运行得很好。 另请注意,服务器大多处于闲置状态(〜70%)。
对我的使用案例的任何反馈将不胜感激。
此处有任何新信息?我也有同样的问题。 – heaphach 2015-09-18 08:51:20
为了解我们由于处理远程请求的节点上的高延迟而导致的问题。 我们做了两件事来解决问题: 1。摆脱了Hazelcast地图并使用本地地图来减少序列化延迟(实现我们自己的持久性)。 2.使用Hazelcast API实现非阻塞的“executeOnKeyOwner”操作。 – ybensimhon 2015-09-20 10:37:22
我也面临类似的情况,这可能与https://github.com/hazelcast/hazelcast/issues/2051有关 – 2015-09-20 11:22:40