elasticsearch,django-haystack,Python,elasticsearch,Django Haystack" /> elasticsearch,django-haystack,Python,elasticsearch,Django Haystack" />

使用python elasticsearch客户端嗅探解决死TCP连接问题

使用python elasticsearch客户端嗅探解决死TCP连接问题,python,elasticsearch,django-haystack,Python,elasticsearch,Django Haystack,我的应用程序中的Python elasticsearch客户端存在连接问题(连接被拒绝),因为防火墙导致空闲TCP连接超时(我没有办法阻止) 修复此问题的最简单方法是,如果我可以通过定期发送一些数据来防止连接闲置,elasticsearch客户端中的嗅探选项似乎非常适合此情况,但它们是: sniff_on_start–指示是否获取节点列表的标志 在启动时从cluser 嗅探器超时–秒数 在自动嗅探之间 嗅探连接失败-标志控制 如果连接失败会触发嗅探 sniff_timeout–用于sniff请求

我的应用程序中的Python elasticsearch客户端存在连接问题(连接被拒绝),因为防火墙导致空闲TCP连接超时(我没有办法阻止)

修复此问题的最简单方法是,如果我可以通过定期发送一些数据来防止连接闲置,elasticsearch客户端中的嗅探选项似乎非常适合此情况,但它们是:

sniff_on_start–指示是否获取节点列表的标志 在启动时从cluser

嗅探器超时–秒数 在自动嗅探之间

嗅探连接失败-标志控制 如果连接失败会触发嗅探

sniff_timeout–用于sniff请求的超时-它应该是一个快速api调用,并且我们可能会与更多节点通信,因此我们希望快速失败。在连接尚未初始化的初始嗅探(如果启动时嗅探)期间不使用


我希望客户端每(比如)5分钟嗅探一次,我应该使用
sniffer\u timeout
还是
sniffer\u timeout
选项?此外,是否应将启动时的
嗅探
参数设置为
True

我使用了来自的建议,发现这些设置解决了我的问题:

sniff_on_start=True
sniffer_timeout=60
sniff_on_connection_fail=True

嗅探在TCP连接上提供了足够的流量,这样它们就不会空闲足够长的时间,我们的防火墙就可以杀死连接。

这个答案可能会有所帮助:@val我使用了这个答案中的设置,如果它起作用,我会报告。需要一些时间来测试它。@val它起作用了!谢谢-我已经留下了一个答案,以防其他人有这个问题。酷,很高兴你找到了答案。如果有帮助,别忘了投票;-)