HttpWebRequest и занятые порты
От: Unforgiver Россия  
Дата: 22.10.08 11:10
Оценка:
Привет всем.

Есть задача — имитировать нагрузку на Web-сервер. Для этого пользуюсь классами HttpWebRequst и HttpWebResponse.

Отдельные бизнес-процессы выполняются на ура (каждый БП состоит из 10-20 запросов).
Однако при работе под нагрузкой (порядка 80-100 потоков) приложение минут через 10-15 стало отваливаться с сообщением о том, что закончились свободные порты. Поискал на MSDN — есть совет увеличить кол-во портов (по дефолту это кол-во = 5000, максимум 65000).

Но это не решение проблемы, а продление агонии

Проверил тоже самое через браузер (ИЕ) и оказалось, что там сколько не открывай одну и ту же страницу, задействованы 1-2 порта.
Как мне заставить каждый поток в приложении выполнять все свои запросы через 1 (2) порт(а), а не каждый запрос через отдельный порт ?

При вызове static-метода WebRequest.Create(...) открывается новый порт. И открываются они так гораздо быстрее, чем закрываются использованные (время закрытия я измерял, оно находится в пределах 30-40 секунд).
Всё заканчивается плохо. Если что-то закончилось хорошо — значит оно еще не закончилось.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.