2017-04-08 111 views
1

在我們的系統中出現了一個奇怪的問題。網絡問題geode客戶端無法連接到服務器和定位器

例如我們有一個由2個節點組成的集羣。 Geode定位器運行在主節點上,並有一個運行Geode客戶端的遠程節點。 當客戶端發生網絡問題(包丟失)一段時間後,客戶端無法連接到定位器(NoAvailableLocatorException)。奇怪的是,即使網絡進入正常狀態,客戶端仍然無法連接到具有相同異常的定位器,即使重新啓動客戶端後也是如此。經過調查,我們發現定位器的端口卡在SYN_RECV上,所以當我們重新啓動定位器時,問題似乎消失了。您能否提供任何線索我們如何解決此問題以及爲什麼服務器端口停留在SYN_RECV上,因爲我們不想重新啓動羣集或找出定位器和服務器並重新啓動它們中的每一個。

回答

0

我不確定您的意思是由SYS_RECV。這不是我熟悉的狀態。你的意思是SYN_RECV? SYN_RECV狀態表示已收到連接請求,正在等待後續處理。有很多這些或只有一個,並且那個匹配定位器配置使用的端口?定位器的線程轉儲將幫助顯示它的功能。

定位器有一個用於定位服務處理的服務器套接字。服務器套接字應在配置的定位器套接字上處於LISTEN狀態,以等待連接請求。這些連接被切換到線程池,從套接字讀取請求數據並處理請求。這些套接字應該處於ESTABLISHED狀態。同一個線程將在同一個套接字上發回一個響應。在客戶端讀取響應之後,與定位器的連接被中止,以避免套接字處於TIME-WAIT狀態。

+0

是的我修改SYN_RECV,我已經編輯了這個問題。 實際上有很多SYN_RECV – mdavid

0

就Geode而言,我能想到的唯一的辦法就是在定位器上設置一個較低的讀超時值。默認值是60000毫秒。

-Dgemfire.TcpServer.READ_TIMEOUT = 10000

從幾乎沒有一個基於Java的服務器可以做丟棄的SYN ACK的

除了。我假設你已經搜索了互聯網,發現很多頁面都在討論這個問題。

相關問題