Является ли лучшей практикой перезапуск хоста Biztalk в качестве ежедневного задания по расписанию?

Я новичок в BizTalk и недавно столкнулся с некоторой проблемой, когда оркестровка biztalk зависала, и мне приходилось перезапускать экземпляр хоста, чтобы снова получить обработку сообщения.

Что мне показалось странным, так это то, что, выполнив тест, я увидел, что экземпляр хоста biztalk в диспетчере задач занимает много памяти и не освобождает их даже после того, как оркестровка переходит в обезвоженный режим.

Это из-за плохого программирования, которое я выполняю в своей biztalk-оркестровке?

К вашему сведению, моя оркестровка использует служебную DLL, которая вызывает WCF для получения данных из SQL Server 2008 R2.

Оркестровка запрограммирована с помощью служебной программы таймера для выхода после четырех часов простоя.

Настройка: к вашему сведению, я использую biztalk 2009, в Windows Server 2008 R2, 24 ГБ памяти, процессор Intel Xeon.

Обновления:

Что ж, ребята, как и ожидалось, правы!

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

Я выполнил диагностический прогон отладки, чтобы получить дамп памяти, и я считаю, что память потребляется схемами и другими частями приложения biztalk, поэтому я думаю, что это, вероятно, нормально.

Я наткнулся на длинный список накопительных обновлений и пытался понять, какое из них мне нужно установить. чтобы решить эту проблему.

Спасибо!


person melaos    schedule 13.08.2012    source источник
comment
Не должно быть причин для перезапуска экземпляров, кроме развертывания новых приложений или внесения изменений в конфигурацию хостов или адаптеров (существует множество prod-серверов BTS, обрабатывающих миллионы сообщений перед перезапуском). Похоже, у вас есть утечка в кастомной сборке.   -  person StuartLC    schedule 13.08.2012
comment
вот чего я боялся, но по крайней мере вы, ребята, помогите мне это подтвердить. Благодарность   -  person melaos    schedule 13.08.2012
comment
Можете ли вы посоветовать, сколько данных вы извлекаете из своего SQL-запроса - прибл. строки и размер (т.е. Кб / Мб); а также сколько времени занимает запрос?   -  person Nick Heppleston    schedule 30.08.2012


Ответы (3)


Выполнение всех ваших вызовов Wcf и SQL внутри вспомогательного кода .Net определенно не передовой практикой, равно как и регулярный перезапуск ваших экземпляров хоста.

Есть ли способ изменить код вашего кода для использования готовых адаптеров? В противном случае попробуйте использовать профилировщик памяти, чтобы узнать, где находится ваша утечка памяти.

person Brett    schedule 13.08.2012
comment
Я согласен с этим - адаптеры в Biztalk очень хорошо спроектированы и корпоративного качества. - person Preet Sangha; 13.08.2012
comment
рассмотрит его, так как он уже находится в производстве, по возможности минимизирует любые большие изменения. - person melaos; 13.08.2012
comment
wcf немного сложно настроить, но он отлично работает, вызывая его из портов отправки. - person Jay; 23.08.2012

Я бы не подумал, что Biztalk нужно перезапускать ежедневно.

Я бы позаботился о том, чтобы все ресурсы в вашей DLL были очищены / удалены надлежащим образом. А затем выполните некоторые измерения в тесте, чтобы убедиться, что не ваш код создает нагрузку на сервер.

person Preet Sangha    schedule 13.08.2012
comment
ты хочешь сказать, что мои dll съедают всю память? есть ли какой-нибудь инструмент, который я могу использовать для проверки? Благодарность - person melaos; 13.08.2012

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

Когда вы говорите много памяти, что это значит? По умолчанию настройка регулирования для потребления памяти процессом экземпляра хоста BizTalk составляет 25% доступной системной памяти. Поэтому, если на вашем сервере 32 ГБ памяти, сервер BizTalk будет считать, что можно безопасно увеличить потребление до 8 ГБ, прежде чем применять какие-либо условия регулирования.

Вы можете использовать Process Monitor (http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx), чтобы углубиться в экземпляр хоста BizTalk и посмотреть, где используется ваша память. По моему опыту, это всегда приводит к созданию нестандартного кода. Загляните в свою настраиваемую DLL и посмотрите, используют ли они такие методы, как XmlDocument, для загрузки большого документа для анализа определенных значений.

person Community    schedule 26.08.2012