BizTalk с малой задержкой - проблема времени ответа при вызове C # к WCF-Опубликовано-Оркестрация - PullRequest
0 голосов
/ 26 января 2010

Вызов публикуемой оркестровки WCF из программы на C # обычно занимает менее секунды. Однако в некоторых случаях между вызовом в программе C # и первым сообщением трассировки из оркестровки может пройти 20-50 секунд. C #, который выполняет вызовы WCF, работает под управлением HIS / HIP (Host-Integration Services / Обработка, инициируемая хостом CICS).

Почти каждый раз, когда я перезапускаю службу HIS / HIP, у нас очень медленное время отклика и, следовательно, время ожидания в CICS. Я также боюсь, что это может произойти в течение дня, если что-то «остынет» - другими словами, может быть, что-то кэшируется. Даже JIT-компиляции первого раза не должны занимать 20-50 секунд, не так ли? Другая вещь, которая кажется странной, заключается в том, что медленное время отклика, по-видимому, является нагрузкой оркестрации, которая выполняется под службой BizTalk, а не за HIP / службой, которую я зациклил.

Страх состоит в том, что когда мы выйдем в эфир, первый пользователь утром (или после «холодного заклинания» получит тайм-аут). Во второй раз они пробуют это после тайм-аута, это всегда быстро.

Я провел несколько тестов, перезапустив каждое из следующих: 1) Услуги BizTalk 2) IIS 3) Интегратор транзакций HIS / HIP (HIP Service)

Перезапуск любого из них приводит к задержке около 20 секунд. Перезапуск всех 3 подобен поцелую смерти - примерно 60 секундная задержка до появления первого следа от оркестровки.

Программа HIP всегда быстро выдает свою первую трассировку, даже когда служба HIP перезапускается. Не уверен, почему перезапуск HIP замедляет запуск оркестровки.

Спасибо

Нил Уолтерс

Ответы [ 2 ]

1 голос
/ 02 августа 2016

У меня та же проблема с потоком BizTalk, который должен работать через 2 секунды, но когда он некоторое время не использовался, перезагрузка dll в кеш генерировала тайм-аут.

Мы нашли решение в документации MS * Конфигурация Orchestration Engine , где объясняется, как избежать выгрузки DLL:

Используя опции SecondsIdleBeforeShutdown и SecondsEmptyBeforeShutdown из AppDomainSpecs и назначая желаемые dll в разделах ExactAssignmentRules или PatternAssignmentRules, вы можете иметь постоянную загрузку dll, и, возможно, вы можете избежать применения вызывающей программы. ,

Примите во внимание, что если вы перезапустите хост BizTalk, dll будет загружен снова.

1 голос
/ 26 января 2010

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

То, что у нас было, было 10-минутным таймером, который вызывал какое-то сообщение поддержки активности. Я не знаю, есть ли у вас неразрушающий вызов, который можно отправить, или вы можете встроить его в систему только для этой цели.

...