2011-06-26 38 views
1

我執行非阻塞連接到服務器。非阻塞連接超時

中選擇以考慮服務器停機/忙碌時使用什麼合適的超時值?

P.S.

由於服務器關閉或忙碌,連接可能會失敗。

如果服務器出現故障,我總是會以選擇超時結束。

更有趣的情況是服務器忙時。恕我直言1秒足夠TCP握手。如果連接到服務器需要很長時間,則與服務器的所有通信都會延遲。那麼是否合理決定等待選擇 max 1秒?

+0

我使用了10秒鐘。 –

+1

這個問題沒有一個確定的答案。我不認爲這是你的錯,它只是一個非常困難的問題,你將不得不做一些試驗和錯誤,找到一個適合你的價值。 –

回答

2

在這種情況下,節點會在超時後重新發送數據包,所以不要使用足夠握手的值。你可以用tcpdump玩一下,斷開連接(拔掉以太網電纜),看看發生了什麼。

類似10-20秒的應該沒問題,但這取決於你的任務的重要程度......

0

這真的取決於你,但我想像10-20秒這樣的東西是合理的時間。

Apache's default KeepAliveTimeout is 15 seconds,這是您可以使用的一種標準。

+0

我認爲他們談論其他超時:「服務器將等待持續連接的後續請求的時間量」。 – dimba

+0

@dimba:確實,它們不是同一件事,但它們都是遠程機器的超時請求,所以它們將處於同一個球場。 –

1

到服務器的連接應該是幾乎立即。我認爲這可能有點主觀,但幾秒鐘應該是綽綽有餘。對於最近的一些工作,我們使用了10秒鐘,這已經吸引了我們所有的案例。