Compartir a través de


Conceptos de reciclaje de aplicaciones COM+

El reciclaje de aplicaciones puede aumentar significativamente la estabilidad general de las aplicaciones COM+, ya que ofrece una solución rápida para problemas conocidos y ayuda a protegerse frente a otras inesperadas. Por ejemplo, el rendimiento de la aplicación puede degradarse con el tiempo debido a problemas como pérdidas de memoria, uso de recursos no escalables y errores de proceso. COM+ proporciona reciclaje de aplicaciones como solución a estos problemas. Puede usar el reciclaje de aplicaciones para apagar automáticamente un proceso y reiniciarlo, reinicializando un proceso con errores y reasignando la memoria que usa.

El reciclaje de aplicaciones funciona mediante la creación de un duplicado del proceso dllhost asociado a una aplicación. Este archivo Dllhost duplicado procesa todas las solicitudes de objetos futuras, lo que deja el archivo Dllhost antiguo para finalizar el mantenimiento de las solicitudes de objeto restantes. El proceso dllhost anterior se cierra cuando detecta la liberación de todas las referencias externas a objetos del proceso o cuando se alcanza el valor de tiempo de espera de expiración. A través de este comportamiento, el reciclaje de aplicaciones garantiza que una aplicación cliente no experimente una interrupción del servicio.

Nota:

No se puede reciclar una aplicación COM+ que se ha configurado para ejecutarse como un servicio de Windows. Además, las aplicaciones de biblioteca tienen las propiedades de reciclaje y agrupación de su proceso de host.

 

Puede configurar el reciclaje de aplicaciones de forma administrativa mediante la herramienta administrativa Servicios de componentes, o mediante programación, a través del SDK administrativo de COM+. Puede reciclar procesos en función de varios criterios, determinados por las siguientes propiedades de un objeto COMAdminCatalogObject en la colección Applications :

  • RecycleLifetimeLimit. El número máximo de minutos que puede ejecutar un proceso antes de reciclarse. El intervalo válido es de 0 a 30 240 minutos (21 días). El número predeterminado de minutos es 0, lo que indica que el proceso no se reciclará al alcanzar un límite de duración.
  • RecycleMemoryLimit. Cantidad máxima de uso de memoria del proceso (en kilobytes) antes de reciclar el proceso. Si el uso de memoria del proceso supera el número especificado durante más de un minuto, el proceso se recicla. El intervalo válido es de 0 a 1048 576 KB. La cantidad predeterminada de uso de memoria es de 0 KB, lo que indica que el proceso no se reciclará al alcanzar un límite de memoria.
  • RecycleCallLimit. Número máximo de llamadas que pueden aceptar los objetos de aplicación antes de reciclar el proceso. El intervalo válido es de 0 a 1048 576 llamadas. El número predeterminado de llamadas es 0, lo que indica que el proceso no se reciclará al alcanzar un límite de llamadas.
  • RecycleActivationLimit. Número máximo de activaciones de objetos de aplicación que se van a aceptar antes de reciclar el proceso. El intervalo válido es de 0 a 1048 576 activaciones. El número predeterminado de activaciones es 0, lo que indica que el proceso no se reciclará al alcanzar un límite de activación.

Además, la propiedad RecycleExpirationTimeout del objeto COMAdminCatalogObject se usa para forzar el apagado de un proceso reciclado. Indica el número de minutos que se deben esperar a que se liberen todas las referencias externas a los objetos del proceso reciclado antes de cerrar el proceso por la fuerza. El intervalo válido es de 1 a 1440 minutos (24 horas) y el tiempo de espera de expiración predeterminado es de 15 minutos. Este valor sólo se usa cuando ya se ha determinado que un proceso se reciclará en función de otros criterios.

Puede seleccionar más de un criterio para reciclar una aplicación. COM+ recicla la aplicación después de cumplir el primer conjunto de criterios. Puede establecer el valor de tiempo de espera de expiración para determinar cuánto tiempo puede dedicar un proceso de Dllhost anterior a completar las solicitudes de servicio restantes antes de cerrar por fuerza.

La colección ApplicationInstances proporciona la propiedad HasRecycled, que proporciona una manera de determinar si la aplicación se ha reciclado alguna vez.

Tareas de reciclaje de aplicaciones COM+

RecycleSurrogate