Поделиться через


Основные понятия переработки приложений COM+

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

Повторное использование приложений выполняется путем создания дубликата процесса Dllhost, связанного с приложением. Этот дублированный процесс Dllhost обслуживает все будущие запросы объектов, оставляя старый Dllhost для завершения обслуживания оставшихся запросов объектов. Старый процесс Dllhost завершается при обнаружении освобождения всех внешних ссылок на объекты в процессе или при достижении тайм-аута. Благодаря этому рециркуляция приложений гарантирует, что клиентское приложение не испытывает прерывания работы службы.

Заметка

Невозможно переработать приложение COM+, которое было настроено для запуска в качестве службы Windows. Кроме того, библиотечные приложения обладают свойствами повторного использования и динамического объединения процессов их хоста.

 

Вы можете настроить повторное использование приложений с помощью средства администрирования служб компонентов или программно с помощью пакета SDK для администрирования COM+. Вы можете повторно использовать процессы на основе нескольких критериев, определенных следующими свойствами объекта COMAdminCatalogObject в коллекции Applications:

  • RecycleLifetimeLimit. Максимальное количество минут, в течение которых процесс может выполняться перед перезапуском. Допустимый диапазон составляет от 0 до 30 240 минут (21 дней). Значение по умолчанию — 0, указывающее, что процесс не будет перезапущен при достижении предельного срока службы.
  • RecycleMemoryLimit. Максимальный объем использования памяти процесса (в килобайтах) перед перезапуском процесса. Если использование памяти процесса превышает указанное число дольше одной минуты, процесс перезапускается. Допустимый диапазон составляет от 0 до 1 048 576 КБ. Объем памяти по умолчанию составляет 0 КБ, что указывает на то, что процесс не будет возвращаться к исходному состоянию при достижении предела памяти.
  • RecycleCallLimit. Максимальное количество вызовов, которые объекты приложения могут принимать перед повторной обработкой процесса. Допустимый диапазон составляет от 0 до 1 048 576 вызовов. Число вызовов по умолчанию равно 0, указывающее, что процесс не будет перезапускаться при достижении предела вызовов.
  • RecycleActivationLimit (лимит активации переработки) Максимальное количество активаций объектов приложения, которые необходимо принять перед повторной обработкой процесса. Допустимый диапазон — от 0 до 1 048 576 активаций. Число активаций по умолчанию равно 0, указывающее, что процесс не будет перезапускаться от достижения ограничения активации.

Кроме того, свойство RecycleExpirationTimeout объекта COMAdminCatalogObject используется для принудительного завершения повторного процесса. Оно указывает количество минут ожидания выхода всех внешних ссылок на объекты в переработанном процессе, прежде чем принудительно завершить процесс. Допустимый диапазон составляет 1–1440 минут (24 часа), а время истечения срока действия по умолчанию — 15 минут. Это значение используется только в том случае, если оно уже определено, что процесс будет переработаться на основе других критериев.

Вы можете выбрать несколько критериев для повторной переработки приложения. COM+ перезапускает приложение после выполнения первого набора критериев. Вы можете задать значение времени завершения, чтобы определить, сколько времени процесс Dllhost может затрачивать на завершение оставшихся запросов на обслуживание, прежде чем будет принудительно завершён.

Коллекция ApplicationInstances предоставляет свойство HasRecycled, которое позволяет определить, когда-либо перезапускалось приложение.

задачи по переработке приложений COM+

RecycleSurrogate