我執行非阻塞連接到服務器。非阻塞連接超時
在中選擇以考慮服務器停機/忙碌時使用什麼合適的超時值?
P.S.
由於服務器關閉或忙碌,連接可能會失敗。
如果服務器出現故障,我總是會以選擇超時結束。
更有趣的情況是服務器忙時。恕我直言1秒足夠TCP握手。如果連接到服務器需要很長時間,則與服務器的所有通信都會延遲。那麼是否合理決定等待選擇 max 1秒?
我執行非阻塞連接到服務器。非阻塞連接超時
在中選擇以考慮服務器停機/忙碌時使用什麼合適的超時值?
P.S.
由於服務器關閉或忙碌,連接可能會失敗。
如果服務器出現故障,我總是會以選擇超時結束。
更有趣的情況是服務器忙時。恕我直言1秒足夠TCP握手。如果連接到服務器需要很長時間,則與服務器的所有通信都會延遲。那麼是否合理決定等待選擇 max 1秒?
在這種情況下,節點會在超時後重新發送數據包,所以不要使用足夠握手的值。你可以用tcpdump
玩一下,斷開連接(拔掉以太網電纜),看看發生了什麼。
類似10-20秒的應該沒問題,但這取決於你的任務的重要程度......
這真的取決於你,但我想像10-20秒這樣的東西是合理的時間。
Apache's default KeepAliveTimeout is 15 seconds,這是您可以使用的一種標準。
我認爲他們談論其他超時:「服務器將等待持續連接的後續請求的時間量」。 – dimba
@dimba:確實,它們不是同一件事,但它們都是遠程機器的超時請求,所以它們將處於同一個球場。 –
到服務器的連接應該是幾乎立即。我認爲這可能有點主觀,但幾秒鐘應該是綽綽有餘。對於最近的一些工作,我們使用了10秒鐘,這已經吸引了我們所有的案例。
我使用了10秒鐘。 –
這個問題沒有一個確定的答案。我不認爲這是你的錯,它只是一個非常困難的問題,你將不得不做一些試驗和錯誤,找到一個適合你的價值。 –