Я пытаюсь написать клиент нагрузочного тестирования для сервера веб-службы, который я написал.Клиент взаимодействует с сервером по HTTP.
Обычные клиенты для моей службы должны использовать HTTP keep alive (используя HTTP 1.1 и не устанавливая значение KeepAlive в false в HttpWebRequest), чтобы их TCP-соединения оставались наболее поздние HTTP-запросы.Каждый клиент вначале выполняет синхронный запрос / ответ для аутентификации, а затем переходит к асинхронным запросам.
В моем нагрузочном тесте я хочу, чтобы сотни симулированных клиентов отправляли запросы на один и тот же сервер.Но, если я не установил для KeepAlive значение false в моих запросах HttpWebResets, ВСЕ симулированные клиенты, очевидно, пытаются использовать то же самое TCP-соединение, и в моем нагрузочном тесте возникают сбои, поскольку они медленно пытаются разделить соединение для выполнения своей первоначальной синхронной работы.Запросы.Я не верю, что выполнение первого запроса асинхронно исправит это, я пробовал это раньше и получал тот же лар при вызове BeginGetResponse () (который должен немедленно вернуться, но не), потому что он ожидает, чтобы попасть наобщее подключение, я думаю.
Есть ли какой-нибудь способ убедиться, что каждый из моих "клиентов" в моем нагрузочном тесте получает свое собственное TCP-соединение, которое они повторно используют для будущих запросов HttpWebRequests?
У кого-то был похожий вопрос: Тайм-аут HttpWebRequest в 3.5sp1 , который они решили с помощью KeepAlive = false, но для меня этого недостаточно, потому что этот сервер будет иметь огромный объем, и я хочусвести к минимуму передачу сетевых данных.