由于Hazelcast 2.5中已知(固定)的错误,我们已经确定这将是我们项目的下一个升级候选者。但是在放入最新版本(3.2.2)后,我们的表现非常糟糕。
我们使用Hazelcast的方式:
使用Hazelcast 2.5时,我们提供了包含所有包含的密钥map.values()
的列表,而不是map.getAll(containedKeys)
,而是使用了Hazelcast 2.5。我们通过向映射添加EntryListener
来跟踪包含的密钥的方式,该映射将包含的密钥存储在并发集中。这是由同事添加的,感觉就像一个黑客,但就像一个魅力。
现在,当我们升级到Hazelcast 3.2.2时,我们会立即看到java.io
的问题,例如,请查看AppDynamics的以下代码段:
com.hazelcast.map.proxy.MapProxyImpl:getAll:326 (method time = 0 ms, total time = 18938 ms)
com.hazelcast.map.proxy.MapProxySupport:getAllObjectInternal:495 (method time = 0 ms, total time = 18938 ms)
com.hazelcast.map.MapService:toObject:852 (method time = 0 ms, total time = 18938 ms)
com.hazelcast.spi.impl.NodeEngineImpl:toObject:156 (method time = 0 ms, total time = 18938 ms)
com.hazelcast.nio.serialization.SerializationServiceImpl:toObject:221 (method time = 0 ms, total time = 18938 ms)
com.hazelcast.nio.serialization.StreamSerializerAdapter:read:59 (method time = 0 ms, total time = 18938 ms)
com.hazelcast.nio.serialization.DefaultSerializers$ObjectSerializer:read:185 (method time = 0 ms, total time = 18938 ms)
java.io.ObjectInputStream:readObject:370 (method time = 3398 ms, total time = 18938 ms)
java.io.ObjectInputStream:readObject:370 (method time = 15540 ms, total time = 15540 ms)
这是我们在Hazelcast 2.5中看不到的,但在3.2.2中也有。它使我们的应用程序彻底停顿。再次用2.5替换jar(并将Entry重命名为MapEntry)并没有错。
可能导致这种情况的原因是什么?也许它不再使用近缓存了?
答案 0 :(得分:0)