java - 在 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);
解决方案
首先,您让 Catalina 在一些良性日志行之间以 1:30 的速度输掉了比赛,然后 Ignite 又在不知不觉中花费了两分钟。
我会想象这里正在发生一些外部的事情。极慢的 I/O?需要永远解析的主机名?远程很难说。
推荐阅读
- javascript - 在创建服务器时调用 response.end() 时写入结束错误
- android - 如何远程共享和访问我的 android 手机屏幕,如 teamviewer
- php - 从数组中获取前两个值并运行 foreach
- c# - 无法在对象中插入重复键 - 如何在 Entity Framework Core 中创建复合键
- c++ - 错误:AddressSanitizer:负大小参数:(大小=-4)
- google-api - Google 如何对语言检测收费
- java - NativeScript 中 Java 类的 Intellisense
- javascript - 状态数组在 React.js 中无法正确呈现
- android - 如何在整个应用程序(或活动)中为打开/关闭对话框设置动画?
- python - 替换python数据框中的-strings