使用Spring Batch的HazelCast Perfomance测试会抛出TargetDisconnectedException

时间:2014-12-04 13:34:28

标签: java hazelcast

我有一个带有2个节点的HazelCast服务器设置,服务器一直很健康,从未出现任何问题。我的客户来自弹簧批次的多个实例,每个弹簧批次有120个线程,有五个弹簧批次实例,这意味着可能有大约120 * 5 = 600个线程试图访问IMap来设置/获取值。

当我开始批量处理的3个实例时,在IMap中设置值所花费的时间超过50秒并且慢慢地抛出以下异常:

com.hazelcast.spi.exception.TargetDisconnectedException
        at com.hazelcast.client.spi.impl.ClientCallFuture.get(ClientCallFuture.java:128)
        at com.hazelcast.client.spi.impl.ClientCallFuture.get(ClientCallFuture.java:111)
        at com.hazelcast.client.spi.ClientProxy.invoke(ClientProxy.java:110)
        at com.hazelcast.client.proxy.ClientMapProxy.set(ClientMapProxy.java:380)
        at com.ebay.app.raptor.dfmailbat.components.cache.client.processor.CacheClient.setDealsResponseInCache(CacheClient.java:101)
        at com.ebay.app.raptor.dfmailbat.components.deal.finder.service.manager.DealFinderManager.getDeals(DealFinderManager.java:59)

每个Spring都有一个静态的IMap实例,并使用相同的实例来设置/获取值。像这样:

static {
        ClientConfig clientConfig = new ClientConfig();

        List<String> addresses = getClusterAddresses();

        if (addresses != null) {
            clientConfig.getNetworkConfig().setAddresses(addresses);
            s_client = HazelcastClient.newHazelcastClient(clientConfig);
        }
        else {
            s_logger.log(LogLevel.ERROR, "No host in Database for hazelcast client set up");
        }

        if (s_client != null) {
            s_map = s_client.getMap("ItemDealsMap");
        }

    }

所有线程都使用s_map来设置/获取IMap中的条目。当我将条目设置为IMap时,我将驱逐时间设置为12小时。我在服务器和客户端上都使用HazelCast 3.3。当并发线程数增加时,此问题始终可以重现。当我关闭弹簧批次并重新开始时,它运行良好。你能帮我解决这个问题。

0 个答案:

没有答案