我们的Ignite服务发布到生产后出现了一个奇怪的问题,每次query,第一次去查询的时候都非常慢,有可能会花五分钟才返回数据,但是紧接着查询几次都非常快,然后过一分钟再查又会很慢了。这种情况平时都不会出现。
经过调查Ignite client端会报出一个WARN,说连接一个IP超时,建议延长failureDetectionTimeout,这个IP地址并不是我们的Ignite Server所在服务器地址。查看Ignite Server服务器监听端口,发现是在监听0.0.0.0:47500,0.0.0.0:47100,然后调查了一下我们的生产服务器,竟然是多网卡。。还有一个是给NAS盘用的网卡,用的是另一个IP。于是问题找到了,client端连到server的时候搞错了IP导致。
解决办法就是强制设置Ignite的localAddress
TcpDiscoverySpi spi = new TcpDiscoverySpi();
spi.setLocalAddress(固定IP);
TcpCommunicationSpi cSpi = new TcpCommunicationSpi();
cSpi.setLocalAddress(固定IP);
这样去监听的就是我们想要的地址了,client端可以一下子连上来。
你可以在server或client端都设置一下local address最稳,根据需求。