为什么Hazelcast对基本操作如get and put这么慢?

时间:2016-05-19 06:32:23

标签: hazelcast

我有一个运行Hazelcast 3.6的两个盒子集群。

我正在尝试运行一些非常基本的测试来感受性能。整个地图中的获取,放置和聚合都非常慢。

我看到每秒2.6次获取或放置操作。知道为什么会这样吗?

这是我的测试代码:

public static void main(String[] args) {

    ClientConfig clientConfig = new ClientConfig();
    clientConfig.getGroupConfig().setName("dev").setPassword("dev-pass");
    clientConfig.getNetworkConfig().addAddress("10.90.288.14", "10.90.288.15");

    HazelcastInstance client = HazelcastClient.newHazelcastClient(clientConfig);

    IMap<Integer, Integer> map = client.getMap("int-map");

    for (int i = 0; i < 10000; i++) {
        map.put(i, i);
        System.out.println(i);
    }

    for (int i = 0; i < 10000; i++) {
        map.get(i);
        System.out.println(i);
    }

    System.out.println("Summed:" + map.values().stream().mapToInt(Integer::intValue).sum());

    client.shutdown();
    System.out.println("Finished");
}

1 个答案:

答案 0 :(得分:1)

我要解决的第一件事是在每次获取时删除System.outs,因为这会产生很大的开销。如果您真的想记录某些内容,请添加以下内容:

if(k%1000==0)println("whatever")

此外,你需要更长的运行时间来说明任何合理的事情,1k跑,你甚至没有加热JIT。所以至少运行1M次。

我会通过在开始之前存储时间并在测试之后存储时间来直接计算性能。你会得到像

这样的东西

long duration=endMs-startMs; double throughput = (1000d*iteration)/duration