Показать сообщение отдельно
Старый 06.09.2012, 23:57   #3  
Konstantin Katsovich is offline
Konstantin Katsovich
Участник
Аватар для Konstantin Katsovich
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
243 / 57 (2) ++++
Регистрация: 22.10.2008
Адрес: Israel
Цитата:
Сообщение от spirius Посмотреть сообщение
Доброго времени суток!

Проблемка:
Существует батч, который создает тысячи рекорд с помощью вызова CrmServiceWrapper.Create(entity). Рекорды создаются без проблем.

Но каждый вызов .Create создает TCP соединение в IIS.
При малом количестве создаваемых рекорд ничего страшного не происходит. Но когда количество рекорд сильно увеличивается ИИС останавливается. Как я понял это зависит от ограничений на: количество свободных портов, время ожидания и т.д.

вот и возникает вопрос: есть ли возможность обрывать созданное .Create TCP соединение программно?
Dispose не помог. в CrmServiceWrapper других методов не видел, подобных этому.

П.С. CrmServiceWrapper использовать необязательно - может быть у кого-нибудь есть готовое решение через другую реализвацию?

Заранее спасибо.
Смысл в том, что при открытии порта он остается открытый примерно четыре минуты поэтому вы ограничены по количеству обращений (не более 5000 портов).
Это не связано не с СРМ не с CrmServiceWrapper .
Это ограничение IIS, так сказать его дифолтные настройки.

Я знаю несколько решения этой проблемы
  1. Увеличения количества процессов в Application Pool под которым бежит СРМ.
  2. Увеличение количества портов и уменьшения время которое порт открыт. http://support.microsoft.com/kb/196271
    Оба этих я использую если есть большая нагрузка на СРМ, от пользователей (много пользователей много работают).
  3. Если проблема только ночью с какой-нибудь аппликацией которая обновляет/создает большой количества записи больше 4000.
    Можно поставить Sleep между обращениями примерно 60 миллисекунд. Смысл в том, что у вас не было больше 16 обращений в минуту.

Удачи
__________________
Читайте SDK!!!