En este tema se describen las tareas de gestión de ciclos de vida para CM Server.
CM Server utiliza dos fábricas de conexiones gestionadas de J2C (una para ClearCase
y una para ClearQuest) para iniciar y controlar procesos del servidor de fondo
que se comunican con los productos principales de ClearCase y ClearQuest.
Los procesos ONCRPC de fondo (procesos ccrpc para ClearCase y procesos cqrpc para ClearQuest) sirven de puente al espacio entre los componentes de J2EE y Websphere de CM Server
y los componentes principales de ClearCase y ClearQuest.
CM Server ejecuta un número de tareas de fondo para ayudar a gestionar y
controlar todo el ciclo de vida de cada proceso de servidor ONCRPC de fondo
iniciado; no es necesaria ninguna intervención del administrador para permitir
que estas tareas se ejecuten.
Existe una tarea de ciclo de vida genérica que realiza gestión de ciclos de vida
no específicos del producto y tareas específicas del producto que controlan los
comportamientos de los objetos del servidor de fondo de ClearCase
y ClearQuest. Cada tarea utiliza atributos de los MBeans configurables
como ayuda para regir el número y la longevidad de los objetos activos
del servidor a fin de ayudar a mantener la capacidad del sistema para mantener
el nivel con la carga de trabajo e impedir una degradación del rendimiento
debido a un consumo excesivo de recursos. Consulte el apartado Establecimiento de los atributos de MBeans disponibles para obtener información
sobre los atributos de los MBeans y sobre cómo configurarlos.
Gestión de ciclos de vida de la fábrica de conexiones gestionadas genérica
La
tarea de gestión de ciclos de vida genérica afecta a todos los procesos ONCRPC de fondo creados por
las fábricas de conexiones. Esta tarea se inicia desde CM Server cuando se inicia inicialmente CM Server. La tarea se ejecuta cada dos minutos
y es responsable de probar cada servidor ONCRPC de fondo para garantizar que cada
proceso de fondo de servidor todavía funciona normalmente y para limpiar los restos
de los procesos de servidor que se han terminado.
Cada vez que se ejecuta la
tarea, obtiene una lista de descriptores de contexto a los objetos de servidor de fondo
iniciados por CM Server marcados como EN EJECUCIÓN. Cada objeto de servidor de fondo
se prueba para garantizar que un proceso de fondo en funcionamiento está en ejecución. Para cada
proceso de fondo que se detecte que funciona incorrectamente, se inicia la limpieza del objeto de
servidor de la forma siguiente (los mensajes de registro registran los sucesos de este tipo):
- El objeto de servidor se marca como no funcional de forma que no se proporcione ningún trabajo
nuevo a ese servidor.
- Se pone en cola una notificación de limpieza del MBean y transcurridos cinco segundos
se recibe la notificación de forma asíncrona y se realiza todo el trabajo de limpieza en el
objeto de servidor que funciona incorrectamente.
- El objeto de servidor se elimina de la lista de objetos de servidor de la fábrica de conexión gestionada padre.
- Se anula el registro del MBean asociado con ese servidor.
A continuación, la tarea obtiene
una lista actualizada de los servidores con estado DETENIÉNDOSE (los servidores desocupados se marcan de esta forma). Para cada
objeto de servidor que ha estado en el estado DETENIÉNDOSE durante como mínimo 30 segundos, se comprueba el proceso
de fondo del objeto de servidor para comprobar que el proceso se ha detenido realmente. Si el proceso del objeto de servidor
no se ha detenido, se fuerza la detención y eliminación del proceso de la lista de servidores de la fábrica. Los servidores que no han estado DETENIÉNDOSE durante como mínimo 30 segundos se dejan en la lista de servidores
de la fábrica y se comprueban la próxima vez que se ejecuta la tarea.
Tareas de gestión de ciclos de vida de la fábrica de conexiones gestionadas específicas del producto
Además
de la tarea de gestión de ciclos de vida genérica, una tarea independiente de ClearCase y una tarea independiente de ClearQuest
controlan la gestión de ciclos de vida específica del producto de sus respectivos procesos de servidor de fondo.
El servidor
oncrpc de fondo de ClearQuest (denominado proceso cqrpc) es un proceso de varias hebras; normalmente hay un
número pequeño de procesos cqrpc en ejecución en un momento determinado. El servidor oncrp de fondo de ClearCase
(denominado proceso ccrpc) es un proceso de una sola hebra; normalmente hay varios de estos procesos en ejecución
en cualquier momento determinado. Las fábricas de conexiones gestionadas específicas del producto utilizan
atributos de MBeans configurables como ayuda para regir el número y la longevidad de los procesos activos
a fin de ayudar a mantener la capacidad del sistema de mantener el nivel de la carga de trabajo al mismo tiempo que se impide una degradación del rendimiento
debido a un consumo excesivo de recursos.
Gestión de ciclos de vida de la fábrica de conexiones gestionadas de ClearCase
Existen algunos atributos de MBeans clave que se utilizan para regir el número de procesos ccrpc que se deben habilitar;
es posible que sea necesario modificar los valores predeterminados de estos parámetros en función del tipo de sistema
en el que esté instalado CM Server así como el uso previsto del servidor en función de la carga y la capacidad:
- El atributo de MBeans CcServerFactoryMBean.serverThresholdCount es el número de umbral
de servidores CCRPC que una vez que se alcance desencadenará la gestión de ciclos de vida en línea en
la fábrica de conexiones gestionadas de ClearCase.
- El atributo de MBeans CcServerFactoryMBean.maxServerCount es el número máximo
de servidores CCRPC que se pueden crear en la fábrica de conexiones gestionadas de ClearCase
al mismo tiempo.
- El atributo de MBeans CcServerFactoryMBean.maxServersPerCredential limita que las
aplicaciones cliente creen demasiadas hebras por sesión única de usuario.
Estos valores
se pueden ajustar utilizando el programa de utilidad de la línea de mandatos wsadmin. Consulte el apartado Establecimiento de los atributos de MBeans disponibles para obtener información sobre los atributos de los MBeans y sobre cómo configurarlos. Parámetros como por ejemplo el tamaño
de memoria, la velocidad del procesador y otros atributos del sistema rigen cómo se deben establecer estos y
otros valores de CcServerFactoryMBean.
Cuando una solicitud de ClearCase llega a CM Server desde un cliente, se realiza un intento de obtener un objeto de servidor de fondo para procesar la solicitud.
Para cada solicitud que llega, se realizan las siguientes comprobaciones en línea:
- Se comprueba en la lista de objetos de servidor de ClearCase si hay un servidor no ocupado para
procesar la solicitud. Un objeto de servidor se considera ocupado si ya está en medio del proceso de
otra solicitud. Si un objeto de servidor existente no está ocupado y coincide con las credenciales
de la solicitud, ese objeto de servidor proporciona servicio a la solicitud.
- Si no hay objetos de servidor existentes que coincidan con las credenciales o bien los objetos de servidor existentes están ocupados, es necesario crear un nuevo objeto de servidor y asociarlo a la solicitud; esto se puede
hacer sólo si la fábrica de conexiones gestionadas tiene la capacidad, de la forma siguiente:
- Si se ha alcanzado el número de CcServerFactoryMBean.maxServersPerCredential de servidores ccrpc
o el número de CcServerFactoryMBean.maxServerCount de servidores ccrpc, la hebra de trabajo asignada para
procesar la solicitud de cliente entra en un bucle de espera-y-reintento; se realizarán hasta
TeamServerMBean.maxProcureServerAttempts intentos durante un total de TeamServerMBean.procureServerInterval segundos
para adquirir un servidor.
- Si no se puede adquirir el servidor, se rechazará la solicitud de cliente.
(De lo contrario, se creará un nuevo
objeto de servidor y se asignará a la solicitud).
Además de las comprobaciones en línea
anteriores que se realizan cada vez que llega una solicitud, una tarea de gestión de ciclos de vida específica
de ClearCase de fondo realiza la subtarea siguiente:
Cada dos minutos se crea una lista de todos los servidores ccrpc que han estado desocupados
durante
CcServerFactoryMBean.idleServerInterval segundos o más y cada servidor de esta
lista se detiene con un periodo de gracia de la forma siguiente:
- La instancia de servidor se coloca en estado DETENIÉNDOSE de forma que no se proporcione al servidor ningún trabajo nuevo.
- Se pone en cola una notificación TERMINATE del MBean y transcurridos cinco segundos la notificación
se recibe de forma asíncrona y se realiza toda la limpieza del objeto de servidor.
- Se envía un mensaje RPC de conclusión al proceso de servidor ccrpc y la instancia de servidor
se establece en el estado DETENIDO.
- Se registra y se guarda la hora actual en la instancia de servidor de forma que la
tarea CheckServer genérica sepa cuánto tiempo el servidor ha estado en el estado DETENIDO.
- La instancia de objeto de servidor se elimina de la lista de servidores de la fábrica de conexiones.
- Se anula el registro del MBean asociado con ese servidor.
Gestión de ciclos de vida de la fábrica de conexiones gestionadas de ClearQuest
La gestión de ciclos de vida de
ClearQuest consta de una tarea de fondo que se ejecuta cada dos minutos, así como de algunas comprobaciones
en primer plano por cada solicitud de cliente que se realizan cuando se procesan las solicitudes. Las comprobaciones
se realizan para determinar si se ha alcanzado algún límite de recurso crítico:
- Si el reciclaje basado en el tiempo está habilitado (es decir, si
CqServerFactoryMBean.recycleServerLifetimeLimit es mayor que cero y
se ha estado ejecutando un objeto de servidor cqrpc durante como mínimo esa
cantidad de tiempo), el objeto de servidor cqrpc está marcado como preparado para
el reciclaje.
- Cuando una solicitud de cliente ha finalizado, se realiza una comprobación para determinar
si el objeto de servidor cqrpc ha procesado como mínimo CqServerFactoryMBean.recycleServerOncrpcCallLimit llamadas de RPC. Si es así, el objeto de servidor cqrpc está marcado como preparado para reciclar.
- Cuando llega una solicitud de cliente y aumenta el número de sesiones, se realiza una comprobación
para determinar si el objeto de servidor cqrpc ha creado como mínimo CqServerFactoryMBean.recycleServerHttpSessionLimit sesiones HTTP. Si es así, el objeto de servidor cqrpc se marca como preparado para reciclar; en este caso, se inicia un objeto
de servidor cqrpc para manejar la solicitud entrante.
La fábrica de conexiones gestionadas de
ClearQuest recicla objetos de servidor cqrpc en lugar de terminarlos (como realiza la fábrica de conexiones gestionadas de ClearCase para objetos de servidor ccrpc que han dejado de ser necesarios). La razón de esto
es que los objetos de servidor cqrpc pueden contener elementos como consultas o registros que aún se tienen
que confirmar; por lo tanto, se permite un periodo de gracia para cualquier trabajo pendiente
que se deba confirmar.
El reciclaje de un objeto de servidor cqrpc consta de:
- El objeto de servidor se coloca en estado DETENIÉNDOSE (también denominado estado RECICLANDO)
de forma que no se proporcione al servidor ningún trabajo nuevo.
- Se pone en cola una notificación RECYCLE del MBean. La notificación se recibe
de forma asíncrona transcurridos cinco segundos; las sesiones de sólo lectura (READ-ONLY)
asociadas con el objeto de servidor se marcan para volverse a asociar con un nuevo
objeto de servidor cuando llegue la siguiente solicitud de esa sesión.
A las sesiones que
están en medio de una transacción de lectura/escritura (READ-WRITE) (es decir, una transacción
que implica la confirmación de una consulta o un registro) se permite hasta CqServerFactoryMBean.recyclingPeriod segundos
para que el trabajo pendiente se confirme. Una vez que se ha confirmado el trabajo o que se ha
alcanzado el CqServerFactoryMBean.recyclingPeriod, el objeto de servidor se coloca en
el estado DETENIDO, su proceso de fondo se termina y el objeto de servidor se elimina
de la lista de servidores de la fábrica de conexiones gestionadas de ClearQuest.