与单个VM上的代码执行相比,Hazelcast为什么这么慢?

时间:2019-06-14 23:07:05

标签: performance hazelcast in-memory

通过Hazelcast分发应用程序后,与在单个VM上执行(完全不使用Hazelcast)相比,它变得非常缓慢。设置非常简单。唯一的区别是,输入数据来自共享队列,而不是本地队列。我使用了一个非常简单的设置,其中包含两个hazelcast实例(出于比较的原因仅执行了一个)和一个提供数据的hazelcast客户端。

榛树广播的开销太大了吗?造成性能差异的可能原因是什么?本地执行非常非常恒定。借助hazelcast,我发现执行时间可能相差很大(最快的速度是本地执行速度的两倍,最慢的两倍)。

更新:性能仅通过网络(在我的情况下为Linode)下降。一旦设置了纯本地网格,性能就会很好。有什么想法吗?

正在工作的榛子实例

HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance();
BlockingQueue<String> configs = hazelcastInstance.getQueue("configs");
String config = configs.take();
FileBotWorker fileBotWorker = new FileBotWorker(mapper.readTree(config));

我的本​​地设置(执行量几乎提高了两倍)

JsonNode config = configLoader.loadConfig();
FileBotWorker worker = new FileBotWorker(config);

我的Hazelcast配置

<?xml version="1.0" encoding="UTF-8"?>
<hazelcast xsi:schemaLocation=
  "http://www.hazelcast.com/schema/config hazelcast-config-3.7.xsd"
  xmlns="http://www.hazelcast.com/schema/config"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <network>
        <port auto-increment="true" port-count="20">5701</port>
        <join>
            <multicast enabled="false">
        </multicast>
        <tcp-ip enabled="true">
            <member>172.104.225.xx</member> <!-- Linode machine -->
        </tcp-ip>
        </join>
    </network>
</hazelcast>

0 个答案:

没有答案