C#. Net Framework 4.7 Предел одновременных запросов HttpClient - PullRequest
0 голосов
/ 12 февраля 2020

У нас есть ASP MVC Application targetting. Net Framework 4.7, который делает запросы Http, используя HttpClient, к другой нашей ASP службе. Оба размещены в IIS на одном сервере. Мы повторно используем экземпляр HttpClient для всех запросов и можем выполнять много одновременных запросов.

Кажется, что-то ограничивает этот запрос, я проверил счетчик производительности текущих подключений веб-службы для принимающего сервера и никогда не превышает 16 соединения при работе на нашем сервере Windows Server 2012 R2 и 17 соединений на моем компьютере Windows 10 для разработки.

Это означает, что при одновременном выполнении более 16/17 запросов они помещаются в очередь. Даже несколько пользователей на нашем сайте коллективно ограничены 16/17 одновременными запросами со стороны HttpClient.

Мое тестирование, похоже, предполагает, что это HttpClient, который принудительно устанавливает этот лимит, как при переходе на создание нового объекта HttpClient в соответствии с запрос, то количество текущих подключений увеличивается, чтобы соответствовать количеству запросов, которые я делаю. Это нереальный вариант из-за накладных расходов на новые подключения.

Я все время нахожу, что ServicePointManager.DefaultConnectionLimit - это параметр, ограничивающий это, но даже установленный на Int32. соединения. Я установил его на 10 и получил 10 соединений. Я установил его на 100 и получил 17. Что еще ограничивает соединения? Если я не могу изменить его, могу ли я узнать, какой будет предел, и сделать больше объектов HttpClient, когда я нажму его?

...