Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Количество открытых сетевых соединений через .NET ?  (Прочитано 3532 раз)
0 Пользователей и 1 Гость смотрят эту тему.
baldr
Команда клуба

ru
Offline Offline
Пол: Мужской
Дорогие россияне


« : 26-02-2009 07:45 » 

Доброе всем время суток Улыбаюсь
Занимаюсь написанием автоматических тестов. Есть сервер, принимающий SOAP-пакеты.
Работу с SOAP наиболее удобным мне показалось сделать через .NET (VB) - все просто и удобно. Цепляем "Web References" и просто вызываем функции. (Де)Сериализацией занимается сам .NET, никаких проблем с типами данных и пр..
В результате все нормально работает в обычном режиме..
Но встал вопрос о стресс-тестах.
Тест реализован в виде Public класса внутри DLL, распараллеливанием занимается LoadRunner (профессиональная тулза для нагрузочного тестирования).
При запуске одновременно (почти) 500 таких эмулируемых юзеров я смотрю количество открытых сетевых соединений с сервером через netstat (netstat -p TCP -n | find "189.17" | find "ESTABLISHED" /c) - оно равно 20 (!). 20 соединений при 500 объектах, ломящихся в сеть??? Через пару минут больше половины вылетает по таймауту, не успев даже инициализироваться.. Жаль
При разных попытках, в том числе запуске трех одинаковых таких тестов количество открытых соединений немного увеличивается.. примерно до 30-35... Жаль
Для сравнения попробовал заменить .NET прямой отправкой подготовленного XML через сокеты. Результат: при 500 объектах открыто 500 соединений. То что надо, но самому заниматься (де)сериализацией мне оооочень не хочется. Через .NET это можно очень красиво и быстро сделать же!

Видимо, .NET сам решает сколько нужно отрывать таких соединений и использует какое-то объединение разных запросов в одно соединение.. Но это работает плохо в моем случае. Мне нужен стресс-тест.

Собственно вопрос: КАК увеличить количество таких соединений??
Плииз хэлп?
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
baldr
Команда клуба

ru
Offline Offline
Пол: Мужской
Дорогие россияне


« Ответ #1 : 26-02-2009 11:02 » 

Походу сам нашел.....
.NET создает файл *.config для каждого своего приложения..
В него нужно добавить следующие настройки для секции <configuration>:
  <system.net> 
    <connectionManagement> 
      <add address="*" maxconnection="1000" /> 
    </connectionManagement> 
  </system.net>
Я делал сначала так для machine.config - ставил настройку по умолчанию, но, видимо, оттуда оно не подхватывается Жаль
Внимание, суприз: если вы пишете dll, то подобная настройка берется из *.config файла для exe, который будет запускать вашу dll, а не из ее *.config файла....
Надеюсь, кому-то тоже поможет..
Я на это убил полторы свои рабочие недели Жаль
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines