Я пытаюсь понять, где разместить серверы, использующие HTTP-вызовы на другой сервер для получения результатов. Кажется, я не могу найти какое-либо определение HTTP, которое определяет максимальное время отклика, хотя я смутно помню 1800 мс.
Кто-нибудь знает, где это определяется, или даже имеет относительно авторитетный источник времени задержки?
Кажется, для этого не написано ни одного RFC! но есть какое-то значение по умолчанию с основного веб-сервера.
IIS: время соединения вышло;
Таймер HTTP.sys Timer_EntityBody истек. Соединение истекло до прибытия тела запроса. Когда становится ясно, что запрос имеет тело объекта, HTTP API включает таймер Timer_EntityBody. Первоначально предел этого таймера установлен на значение connectionTimeout. Каждый раз, когда по этому запросу получено новое указание данных, HTTP API сбрасывает таймер, чтобы дать соединению больше минут, как указано в атрибуте connectionTimeout.
<system.applicationHost>
<sites>
<siteDefaults>
**<limits connectionTimeout="00:02:00" />**
</siteDefaults>
</sites>
</system.applicationHost>
По умолчанию: header = 20-40, MinRate = 500, body = 20, MinRate = 500
Подождите 10 секунд для получения запроса, включая заголовки, и 30 секунд для получения тела запроса:
Заголовок RequestReadTimeout = 10, тело = 30
Подождите не менее 10 секунд, чтобы получить тело запроса. Если клиент отправляет данные, увеличьте тайм-аут на 1 секунду для каждых 1000 полученных байтов, без верхнего предела тайм-аута (за исключением ограничения, заданного косвенно LimitRequestBody):
RequestReadTimeout тело = 10, MinRate = 1000
Подождите не менее 10 секунд, чтобы получить запрос, включая заголовки. Если клиент отправляет данные, увеличивайте тайм-аут на 1 секунду для каждых 500 полученных байтов. Но не допускайте более 30 секунд для запроса, включая заголовки:
Заголовок RequestReadTimeout = 10-30, MinRate = 500
Обычно на сервере должны быть настроены таймауты заголовка и тела. Если для виртуальных хостов http и https используется общая конфигурация, время ожидания не должно быть слишком низким:
Заголовок RequestReadTimeout = 20-40, MinRate = 500, тело = 20, MinRate = 500
Отредактировано:
Если вы имеете в виду на стороне клиента; тогда это что-то закодированное. Согласно Выбратьфункция; буфер чтения может вернуться в таких случаях:
readfds:
- Если было вызвано прослушивание, а соединение ожидает завершения, accept будет успешным.
- Данные доступны для чтения (включая данные OOB, если включен SO_OOBINLINE).
- Соединение было закрыто / сброшено / прервано.
Это означает, что между вызовом select, пока удаленное соединение не разорвано, select ничего не вернет и будет ждать, пока значение, которое вы определите, закроет ваше соединение на стороне клиента.