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

问题描述:

我的应用程序中的Python elasticsearch客户端存在连接问题(拒绝连接),因为由于防火墙导致空闲TCP连接超时(我无法防止此问题)。使用python elasticsearch客户端嗅探来解决死TCP连接问题

解决这个问题的最简单方法是,如果我可以通过周期性地发送一些数据来阻止连接闲置,那么elasticsearch客户端中的嗅探选项看起来非常理想,但它们是not very well documented

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

sniffer_timeout - 自动嗅探之间的秒 数

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

sniff_timeout - 用于鉴别请求超时 - 它应该是一个快速的API调用,我们可能谈论更多的节点,所以我们要迅速失败。在连接仍未初始化时,在初始嗅探过程中(如果sniff_on_start打开),不使用。

我想是为客户的每一个(比方说)步行5分钟嗅,我应该使用sniff_timeoutsniffer_timeout选项?另外,sniff_on_start参数应该设置为True

+1

这个答案可能有帮助:http://*.com/questions/39640200/elasticsearch-python-client-work-with-many-nodes-how-to-work-with-sniffer/39640389#39640389 – Val

+0

@val我使用了该答案中的设置,如果有效,它会报告回来。需要一些时间来测试这个。 –

+0

@val它工作!谢谢 - 我已经留下了一个答案,以防其他人有这个问题。 –

我曾经建议从@val,发现这些设置解决了我的问题:

sniff_on_start=True 
sniffer_timeout=60 
sniff_on_connection_fail=True 

嗅探把足够的流量上的TCP连接,使他们足够长的时间我们的防火墙杀没有闲着连接错误。