2016-11-29 68 views
3

我的應用程序中的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://stackoverflow.com/questions/39640200/elasticsearch-python-client-work-with-many-nodes-how-to-work-with-sniffer/39640389#39640389 – Val

+0

@val我使用了該答案中的設置,如果有效,它會報告回來。需要一些時間來測試這個。 –

+0

@val它工作!謝謝 - 我已經留下了一個答案,以防其他人有這個問題。 –

回答

0

我曾經建議從@val,發現這些設置解決了我的問題:

sniff_on_start=True 
sniffer_timeout=60 
sniff_on_connection_fail=True 

嗅探把足夠的流量上的TCP連接,使他們足夠長的時間我們的防火牆殺沒有閒着連接錯誤。