我在 Tomcat 8.5.32 中使用 Ignite 2.6.0。
如catalina.out日志中所示here启动需要三分半钟。
出于开发目的,有什么方法可以减少这个时间吗?
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);
最佳答案
首先,Catalina 在一些良性的日志行之间损失了 1:30,然后 Ignite 不知何故又花费了两分钟。
我想象这里正在发生一些外部事情。 I/O 极慢?需要永远解析的主机名?远程很难说。
关于java - 加快 Java 中的 Ignite 启动速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52869270/