Hazelcast-分布式映射的吞吐量不一致
我正在使用Hazelcast版本3.3(开源),并且面临分布式map吞吐量不一致的问题 我有一个缓存实例,一端是一个应用程序将数据放入缓存(每1分钟1000个对象),另一端是另一个应用程序从地图获取数据(每秒100个)。Java对象使用默认的Java序列化和内存中的二进制格式 对于大多数“获取”操作,数据的获取工作正常,所需时间不到1毫秒,但有时“获取”操作最多需要20毫秒来获取相同的数据。这种极端行为是不可接受的,因为我不能延迟处理,因为随机获取花费的时间比预期的要长 我期待在获取数据时获得可预测/一致的吞吐量;从Hazelcast实例获取数据时出现随机尖峰是不可接受的。Hazelcast-分布式映射的吞吐量不一致,hazelcast,Hazelcast,我正在使用Hazelcast版本3.3(开源),并且面临分布式map吞吐量不一致的问题 我有一个缓存实例,一端是一个应用程序将数据放入缓存(每1分钟1000个对象),另一端是另一个应用程序从地图获取数据(每秒100个)。Java对象使用默认的Java序列化和内存中的二进制格式 对于大多数“获取”操作,数据的获取工作正常,所需时间不到1毫秒,但有时“获取”操作最多需要20毫秒来获取相同的数据。这种极端行为是不可接受的,因为我不能延迟处理,因为随机获取花费的时间比预期的要长 我期待在获取数据时获得可
如果有人遇到了相同的问题并有指针,请分享。您有GC日志吗?这很可能是由垃圾收集器引入的暂停引起的。On HotSpot(Sun/Oracle Java)可以通过使用以下标志启动JVM来启用日志:
-Xloggc:/path/to/file/gc.log -verbose:gc -XX:+PrintGCDateStamps -XX:+PrintGCDetails
它将生成一个包含GC事件的日志,因此您可以尝试将异常高的延迟与GC暂停关联起来
如果您也可以尝试使用此开关:
-XX:+PrintGCApplicationStoppedTime
它将报告所有JVM暂停,而不仅仅是垃圾收集器触发的暂停。我对该项目做了2项更改 首先,我已将序列化从java.io.Serializable更改为com.hazelcast.nio.serialization.DataSerializable 我已经介绍了java热身时间。在应用程序中实际使用之前,我在启动时多次访问完整地图。 有了这些变化,我可以看到性能有了很大的提高