HttpWebRequest останавливается, когда есть несколько запросов keep-alive - PullRequest
1 голос
/ 25 июня 2010

Я пытаюсь написать клиент нагрузочного тестирования для сервера веб-службы, который я написал.Клиент взаимодействует с сервером по HTTP.

Обычные клиенты для моей службы должны использовать HTTP keep alive (используя HTTP 1.1 и не устанавливая значение KeepAlive в false в HttpWebRequest), чтобы их TCP-соединения оставались наболее поздние HTTP-запросы.Каждый клиент вначале выполняет синхронный запрос / ответ для аутентификации, а затем переходит к асинхронным запросам.

В моем нагрузочном тесте я хочу, чтобы сотни симулированных клиентов отправляли запросы на один и тот же сервер.Но, если я не установил для KeepAlive значение false в моих запросах HttpWebResets, ВСЕ симулированные клиенты, очевидно, пытаются использовать то же самое TCP-соединение, и в моем нагрузочном тесте возникают сбои, поскольку они медленно пытаются разделить соединение для выполнения своей первоначальной синхронной работы.Запросы.Я не верю, что выполнение первого запроса асинхронно исправит это, я пробовал это раньше и получал тот же лар при вызове BeginGetResponse () (который должен немедленно вернуться, но не), потому что он ожидает, чтобы попасть наобщее подключение, я думаю.

Есть ли какой-нибудь способ убедиться, что каждый из моих "клиентов" в моем нагрузочном тесте получает свое собственное TCP-соединение, которое они повторно используют для будущих запросов HttpWebRequests?

У кого-то был похожий вопрос: Тайм-аут HttpWebRequest в 3.5sp1 , который они решили с помощью KeepAlive = false, но для меня этого недостаточно, потому что этот сервер будет иметь огромный объем, и я хочусвести к минимуму передачу сетевых данных.

1 Ответ

0 голосов
/ 25 июня 2010

Предел подключения может варьироваться в зависимости от базовой операционной системы / среды размещения.Его можно изменить программным путем, установив для HttpWebRequest.ServicePoint.ConnectionLimit более высокое значение, или в одном из файлов .config .NET

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