Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hazelcast-分布式映射的吞吐量不一致_Hazelcast - Fatal编程技术网

Hazelcast-分布式映射的吞吐量不一致

Hazelcast-分布式映射的吞吐量不一致,hazelcast,Hazelcast,我正在使用Hazelcast版本3.3(开源),并且面临分布式map吞吐量不一致的问题 我有一个缓存实例,一端是一个应用程序将数据放入缓存(每1分钟1000个对象),另一端是另一个应用程序从地图获取数据(每秒100个)。Java对象使用默认的Java序列化和内存中的二进制格式 对于大多数“获取”操作,数据的获取工作正常,所需时间不到1毫秒,但有时“获取”操作最多需要20毫秒来获取相同的数据。这种极端行为是不可接受的,因为我不能延迟处理,因为随机获取花费的时间比预期的要长 我期待在获取数据时获得可

我正在使用Hazelcast版本3.3(开源),并且面临分布式map吞吐量不一致的问题

我有一个缓存实例,一端是一个应用程序将数据放入缓存(每1分钟1000个对象),另一端是另一个应用程序从地图获取数据(每秒100个)。Java对象使用默认的Java序列化和内存中的二进制格式

对于大多数“获取”操作,数据的获取工作正常,所需时间不到1毫秒,但有时“获取”操作最多需要20毫秒来获取相同的数据。这种极端行为是不可接受的,因为我不能延迟处理,因为随机获取花费的时间比预期的要长

我期待在获取数据时获得可预测/一致的吞吐量;从Hazelcast实例获取数据时出现随机尖峰是不可接受的。
如果有人遇到了相同的问题并有指针,请分享。

您有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热身时间。在应用程序中实际使用之前,我在启动时多次访问完整地图。

有了这些变化,我可以看到性能有了很大的提高