我们的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最稳,根据需求。
本文描述了在生产环境中使用Ignite服务时遇到的连接慢问题,详细分析了问题原因,即客户端错误地连接到了非预期的服务器IP,导致初次查询响应时间过长。通过设置Ignite的localAddress参数,强制客户端连接到指定IP,有效解决了问题。

被折叠的 条评论
为什么被折叠?



