我正在使用Hazelcast版本3.3.1
我使用c3.2xlarge服务器在aws上运行了一个9节点集群
我正在使用分布式执行程序服务和分布式映射
分布式执行程序服务使用单个线程。
分布式映射配置为无复制且没有近缓存,并使用Kryo序列化程序存储大约1-2万个大小为1-2kb的对象。
我的用例如下:
每隔一段时间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 = Address [172.31.44.2]:5701,backupsExpected = 0,backupsCompleted = 0},response = null,done = false}未收到任何响应! backup-expected:0 backup-completed:0
在某些情况下,我看到地图分区开始迁移,这使事情变得更糟,节点不断离开并重新加入群集,我可以解决问题的唯一方法是重新启动整个群集。
我想知道什么可能导致Hazelcast阻止地图获取操作120秒? 我很确定它不是网络相关的,因为同一台服务器上的其他服务运行得很好。 另请注意,服务器大多处于空闲状态(约70%)。
对我的用例的任何反馈都将受到高度赞赏。
答案 0 :(得分:0)
为什么不使用入门处理器?这也发送到拥有分区的右侧机器,负载,修改,存储自动完成并自动完成。所以没有种族问题。由于涉及的远程处理较少,它可能会显着优于当前的方法。
map.get没有返回120秒的事实确实非常令人困惑。如果您切换到Hazelcast 3.5,我们使用慢速操作检测器(执行侧)和慢速调用检测器(调用方)为此添加了一些日志/调试内容,并且应该为您提供一些有关正在发生的事情的信息。
您是否看到正在打印健康监视器日志?