Hazelcast - 使用apprx 500请求/秒读取{200}对象读取缓存时出错

时间:2017-07-18 17:22:10

标签: hazelcast

我们在10个节点集群(apprx 500 MB数据)的缓存中有200万个分布式数据对象(未复制)。备份计数是一个。我们看到以下错误/警告。 你们知道什么时候能看到这些错误吗?我已经清理了一些日志以便不分享敏感内容。我们大部分时间都在缓存读取(大约400请求/秒),整个缓存每2小时重新初始化。

我知道我们可以使用复制缓存来提高性能,但想知道这里发生了什么错误。当我使用较小的集群(例如5个节点)运行时,一切正常。

  • Hazelcast版本3.6.3
  • 服务器大小为8核,16 GB
  • Windows Server 2012 R2
  • IO输入线程数大小为30
  • IO输出线程数大小为50
  

2017-06-24 23:46:22.679 ERROR(hz._hzInstance_1_My-App.partition-operation.thread-5)[chmioGetOperation] - [192.168.111.11]:5701 [我的应用] [3.6.3 ]无法发送响应:HeapData {type = -2,hashCode = 113248027,partitionHash = 113248027,totalSize = 722,dataSize = 714,heapCost = 742}到地址[192.168.111.13]:5701。操作:com.hazelcast.map.impl.operation.GetOperation {identityHash = 1124265765,serviceName =' hz:impl:mapService',partitionId = 189,replicaIndex = 0,callId = 3490089,invocationTime = 1498362385498(周六) 2017年6月24日23:46:25),waitTimeout = -1,callTimeout = 8000,name = HKF / my-cache-id-3,name = HKF / my-cache-id-3}   com.hazelcast.spi.exception.ResponseNotSentException:无法发送响应:HeapData {type = -2,hashCode = 113248027,partitionHash = 113248027,totalSize = 722,dataSize = 714,heapCost = 742}到地址[192.168.111.13]:5701 。操作:com.hazelcast.map.impl.operation.GetOperation {identityHash = 1124265765,serviceName =' hz:impl:mapService',partitionId = 189,replicaIndex = 0,callId = 3490089,invocationTime = 1498362385498(周六) 2017年6月24日23:46:25),waitTimeout = -1,callTimeout = 8000,name = HKF / my-cache-id-3,name = HKF / my-cache-id-3}   at com.hazelcast.spi.impl.operationservice.impl.RemoteInvocationResponseHandler.sendResponse(RemoteInvocationResponseHandler.java:54)   在com.hazelcast.spi.impl.operationservice.impl.OperationRunnerImpl.sendResponse(OperationRunnerImpl.java:278)   在com.hazelcast.spi.impl.operationservice.impl.OperationRunnerImpl.handleResponse(OperationRunnerImpl.java:251)   在com.hazelcast.spi.impl.operationservice.impl.OperationRunnerImpl.run(OperationRunnerImpl.java:173)   在com.hazelcast.spi.impl.operationservice.impl.OperationRunnerImpl.run(OperationRunnerImpl.java:393)   在com.hazelcast.spi.impl.operationexecutor.classic.OperationThread.processPacket(OperationThread.java:184)

1 个答案:

答案 0 :(得分:1)

为什么你有如此庞大的输入和输出线程数(30/50)。在大多数情况下,默认值为3 + 3就足够了。如果你没有50多个连接;所有这些线程都将空闲。即使有50多个连接,你也无法通过如此多的IO线程获得良好的性能。

您看到的错误似乎表明存在网络问题:无法发送响应。最大的问题是为什么会这样。

您可以启用诊断程序:

http://docs.hazelcast.org/docs/latest-development/manual/html/Management/Diagnostics/Enabling_Diagnostics_Logging.html

并将日志文件发送到hazelcast dot com的peter所以我可以查看它。