Сетевые лаги с тысячами HttpClients - PullRequest
0 голосов
/ 31 октября 2019

В моем приложении NET.Framework есть проблема с HTTPCLient.

Я знаю, что HTTPClient должен быть одноэлементным, и мы должны повторно использовать его на всех этапах жизни нашего приложения. Но если мы используем прокси с ProxyHandler, для каждого ProxyHandler с прокси должен быть один экземпляр HttpClient. Итак, у меня более 30 000 HttpClient в моем проекте с прокси, я звоню из ConcurrentDictionary.

Когда я загружаю, мой httpclient генерирует много исключений, таких как WebException, TaskCancellationException. И это не ошибка прокси, как я знаю, потому что я ловлю ее в своем блоке исключений следующим образом:

catch (HttpRequestException)
            {
                //proxyError
            }
catch (TaskCanceledException)
            {
                if (!cts.IsCancellationRequested)
                {
                    //proxyError
                }
                else
                {
                    throw;
                }

Я не бросил CancellationToken самостоятельно.

Как лучше всего выполнять множество запросов со многими клиентами HttpClient?

Windows Server 2016, Core i7-8700, 32 ГБ ОЗУ. 100 Мб интернет ...

Спасибо.

...