【问题标题】:Performance drop upgrading from Hazelcast 2.5 to 3+从 Hazelcast 2.5 升级到 3+ 的性能下降
【发布时间】:2014-08-07 07:21:09
【问题描述】:

由于 Hazelcast 2.5 中的一个已知(已修复)错误,我们决定这将是我们项目的下一个升级候选者。但是在加入最新版本(3.2.2)之后,我们的表现很糟糕。

我们使用 Hazelcast 的方式:

  • 两个节点
  • 多个 IMap 实例(总共约 7 个地图)
  • 两个节点都更新地图
  • 地图上的大量阅读
  • 启用近缓存以加快读取速度

使用 Hazelcast 2.5 时,我们没有使用 map.values(),而是提供了所有包含的键 map.getAll(containedKeys) 的列表,我们获得了出色的性能。我们通过将EntryListener 添加到将包含密钥存储在并发集中的映射来跟踪包含密钥的方式。这是一位同事添加的,感觉就像是 hack,但效果却很不错。

现在,当我们升级到 Hazelcast 3.2.2 时,我们会立即看到 java.io 的问题,例如看看 AppDynamics 的以下 sn-p:

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),没有任何问题。

这可能是什么原因造成的?也许它不再使用近缓存?

【问题讨论】:

  • 有没有机会快速构建自己的快照并尝试一下?我知道有一个 nearcache 错误,但不确定它是否适用于这种情况。
  • 我已经修复了这个:github.com/hazelcast/hazelcast/pull/2523 它修复了 loadClass 但这个 readObject 现在是瓶颈。请指出一个可能的补丁/方向。
  • Java 标准序列化永远是瓶颈。如果您想要高速,请不要使用它或至少使用 j.i.Externalizable。
  • @RoyvanRijn:Hazelcast 的代码库仍在经历惊人数量的代码流失。我们已经看到从一个小版本到另一个小版本的性能大幅波动。我的建议是坚持使用最适合您的特定版本,并尝试在该版本的单点版本中修复您的错误。
  • 您正在使用 Java Serializable。我已经看到了一些问题;为了快速检查,您可能会切换到不同的序列化程序,看看这是否会提高性能。

标签: java java-io hazelcast appdynamics


【解决方案1】:

你看过这个谷歌团体票问题吗?

https://groups.google.com/forum/#!topic/hazelcast/ivk6hzk2YwA

这里特别看问题的原因。

https://github.com/hazelcast/hazelcast/issues/553

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 2013-11-14
    • 2020-10-09
    • 2023-03-24
    相关资源
    最近更新 更多