Время ожидания HttpWebRequest.GetResponse истекло, даже если для параметра Timeout установлено значение Int32.MaxValue - PullRequest
0 голосов
/ 23 октября 2018

Я получаю некоторый тайм-аут при ожидании завершения запроса (POST).Я пытаюсь настроить свой запрос так, чтобы он никогда не превышал время ожидания (некоторые запросы занимают ~ 5 минут для ответа сервера).

Я установил клиенту RestSharp Timeout на Int32.MaxValue, который, основываясь на моем чтении, передается непосредственно обратно в свойство HttpWebRequest.Timeout.

// Somewhere in one-time setup
ServicePointManager.UseNagleAlgorithm = false;
ServicePointManager.DefaultConnectionLimit = 128;
IRestClient client = new RestClient(serverUri);
client.FollowRedirects = false;
client.AddHandler(JSON_CONTENT_TYPE, Converter);
client.Timeout = Int32.MaxValue;

RestRequest request = new RestRequest(resource, RestSharp.Method.POST;
IRestResponse response = ExecuteRequest(client, request);

Сначала, похоже, это сработало, потому что некоторые POST-процедуры занимали 3 или 4 минуты.начал получать через.Время от времени, тем не менее, я все еще получаю тайм-аут, хотя прошло только относительно короткое время.

Вот один из них, который я поймал совсем недавно.Ожидается, что запрос займет около 4 минут, но примерно через 1 минуту и ​​45 секунд возникает исключение.

Подробная информация о response.ErrorException:

InnerException {"The operation has timed out"} System.Exception {System.Net.WebException}

Stack Trace:

at System.Net.HttpWebRequest.GetResponse()
at RestSharp.Http.GetRawResponse(HttpWebRequest request)
at RestSharp.Http.GetResponse(HttpWebRequest request)

Я прочитал, и это, кажется, правильная настройка тайм-аута для использования.Очевидно, HttpWebRequest.ReadWriteTimeout (который по умолчанию должен быть равен 5 минутам) не должно быть проблемой.Все остальное (правильное удаление соединений и т. Д.) Обрабатывается RestSharp, который, как я предполагаю, сделан правильно и, безусловно, хорошо работает для коротких запросов.

Любые мысли о том, что может быть причиной этих спорадических таймаутов доистекло запрошенное время ожидания?


edit чтобы уточнить, мы делаем тысячи запросов к этому серверу без проблем.Сервер не делает ничего особенного, чтобы блокировать нас.У нас есть журналы сервера, и он все еще занят работой по запросу, когда клиент отключается.

Также обратите внимание, что тайм-аут происходит время от времени и в разное время.Я только что воспроизвел его и получил «Время операции истекло» только через 36.8s на этот раз.

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