Неблокирующее время ожидания соединения - PullRequest
1 голос
/ 26 июня 2011

Я выполняю неблокирующее соединение с сервером.

Какое значение тайм-аута следует использовать в , выберите , чтобы считать сервер недоступным / занятым?

PS

Подключитьсяможет произойти сбой, так как сервер не работает или занят.

В случае, если сервер не работает, я всегда буду заканчиваться выбором таймаута.

Более интересный случай, когда сервер занят.ИМХО 1 сек достаточно для TCP рукопожатия.Если для подключения к серверу требуется слишком много времени, вся связь с сервером будет задержана.Итак, будет ли разумным решение подождать при select max 1 sec?

Ответы [ 3 ]

2 голосов
/ 26 июня 2011

Пакеты могут быть потеряны, и в этом случае узел повторно отправит их по истечении времени ожидания, поэтому не используйте значение, достаточное для рукопожатия. Вы можете немного поиграть с tcpdump, разорвать соединение (отсоединить кабель Ethernet) и посмотреть, что происходит.

Что-то вроде 10-20 секунд должно быть хорошо, но это зависит от того, насколько важна ваша задача ...

1 голос
/ 26 июня 2011

Подключение к серверу должно быть практически сразу. Я думаю, что это может быть несколько субъективно, но нескольких секунд должно быть более чем достаточно. Для какой-то недавней работы мы использовали 10 секунд, что охватило все наши случаи.

0 голосов
/ 26 июня 2011

Это на самом деле ваше дело, но я думаю, что примерно 10-20 секунд будет разумным временем ожидания.

KeepAliveTimeout по умолчанию Apache составляет 15 секунд , так что это один стандарт, который вы могли быиспользовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...