首页 > 解决方案 > 在 Java 中加速 Ignite 启动

问题描述

我在 Tomcat 8.5.32 中使用 Ignite 2.6.0。

从 catalina.out 日志中可以看出,启动需要三分半钟。

出于开发目的,有什么办法可以减少这个时间?

Ignite 不需要任何特殊配置。只是适合在单机上开发的最简单的一种。

这就是我初始化 Ignite 的方式:

private IgniteConfiguration getConfiguration(final String cacheName, final CacheConfiguration cacheCfg) {
        TcpDiscoveryVmIpFinder wmIpFind = new TcpDiscoveryVmIpFinder(true);
        try {
            wmIpFind.setAddresses(Arrays.asList(InetAddress.getLocalHost().getHostAddress()));
        } catch (IgniteSpiException | UnknownHostException e) {
            wmIpFind.setAddresses(Arrays.asList("127.0.0.1"));
        }
        TcpDiscoverySpi discoverySpi = new TcpDiscoverySpi();
        discoverySpi.setNetworkTimeout(3000);
        discoverySpi.setReconnectCount(1);
        discoverySpi.setReconnectDelay(60000);
        discoverySpi.setClientReconnectDisabled(true);
        discoverySpi.setIpFinder(wmIpFind);
        IgniteConfiguration igniteConfig = new IgniteConfiguration();
        igniteConfig.setIgniteInstanceName("IgniteLocalhostServer");
        igniteConfig.setCacheConfiguration(cacheCfg);
        igniteConfig.setClientMode(false);
        igniteConfig.setPeerClassLoadingEnabled(false);
        igniteConfig.setMetricsLogFrequency(0);
        igniteConfig.setDiscoverySpi(discoverySpi);
        igniteConfig.setMetricsLogFrequency(0);
        return igniteConfig;
    }
}

接着

CacheConfiguration<K,V> cacheCfg = new CacheConfiguration<K,V>().setCacheMode(CacheMode.LOCAL).setName(name);
Ignite ignite = Ignition.start(getConfiguration(name, cacheCfg));
Cache<K,V> namedCache = ignite.getOrCreateCache(cacheCfg);

标签: javaignite

解决方案


首先,您让 Catalina 在一些良性日志行之间以 1:30 的速度输掉了比赛,然后 Ignite 又在不知不觉中花费了两分钟。

我会想象这里正在发生一些外部的事情。极慢的 I/O?需要永远解析的主机名?远程很难说。


推荐阅读