Ajuste de la detección de pérdidas de conexión de base de datos

Si un motor de mensajería está configurado para utilizar un almacén de datos y no se puede conectar a su almacén de datos, por ejemplo, porque la base de datos que contiene el almacén de datos no está en ejecución, el motor de mensajería no se inicia. Puede ajustar el sistema para aumentar la posibilidad de un inicio correcto del motor de mensajería.

Acerca de esta tarea

En un entorno de servidor único, cuando inicie el servidor de aplicaciones, el motor de mensajería intenta iniciarse. Si la base de datos no está disponible durante más de 15 minutos, el motor de mensajería podría entrar en el estado detenido y necesitar ser iniciado manualmente.

En un entorno de alta disponibilidad, un motor de mensajería se inicia como parte del arranque del servidor o clúster, o como parte del proceso de migración tras error. Durante el inicio del motor de mensajería, éste intenta conectarse al almacén de datos, durante un máximo de 15 minutos de forma predeterminada. Si una de las siguientes sentencias sigue siendo verdadera durante dicho tiempo, el motor de mensajería no se puede iniciar en el servidor, y el servidor está inhabilitado para la alta disponibilidad:
  • La base de datos no está disponible o no está en ejecución.
  • En una situación de migración tras error, la base de datos no detecta la pérdida de la conexión de red con el servidor de aplicaciones original y, por lo tanto, no libera los bloqueos del almacén de datos.
Este estado de inhabilitado se pude propagar a todos los miembros del clúster. Debe volver a habilitar manualmente los servidores para mantener el entorno de alta disponibilidad.

Puede aumentar la posibilidad de que el motor de mensajería se inicie correctamente configurando distintos parámetros como, por ejemplo, el tiempo de espera predeterminado de 15 minutos, en el servidor de bases de datos o el servidor de aplicaciones.

Procedimiento

  1. En el servidor de bases de datos, configure el sistema operativo para minimizar la cantidad de tiempo destinada para detectar la pérdida de una conexión de red con un servidor de aplicaciones. Consulte la documentación del sistema operativo para ver detalles. Por ejemplo, la tabla siguiente lista los parámetros relevantes para los sistemas operativos Windows y AIX:
    Tabla 1. Parámetros TCP/IP. La primera columna de la tabla proporciona la lista de parámetros TCP/IP para los sistemas operativos Windows. La segunda columna de la tabla proporciona la lista de parámetros TCP/IP para los sistemas operativos AIX. La tercera columna proporciona la descripción de los parámetros.
    Nombre de parámetro en el sistema operativo Windows Nombre de parámetro en los sistemas operativos AIX Descripción
    KeepAliveTime tcp_keepidle La cantidad de tiempo (en milisegundos en los sistemas operativos Windows y en 0,5 segundos en los sistemas operativos AIX) que se debe esperar antes de enviar una solicitud keepalive para una conexión inactiva.
    KeepAliveInterval tcp_keepintvl La cantidad de tiempo (en milisegundos en los sistemas operativos Windows y en 0,5 segundos en los sistemas operativos AIX) que se debe esperar una respuesta.
    TCPMaxDataRetransmissions tcp_keepcnt El número de solicitudes de envío antes de finalizar la conexión.
    Puede calcular la cantidad total de tiempo destinado para el servidor de bases de datos para detectar la anomalía de la conexión con el servidor de aplicaciones, utilizando la fórmula siguiente:

    tiempo para detectar la anomalía de la conexión = tiempo de actividad + (intervalo de actividad x número de solicitudes)

    Por ejemplo, para un sistema Windows con los parámetros establecidos de acuerdo con la siguiente tabla, el tiempo total que tarda la base de datos del servidor en detectar la anomalía de la conexión al servidor de aplicaciones es de 350 segundos.
    Tabla 2. Valores de parámetro de ejemplo. La primera columna proporciona los nombres de parámetro. La segunda columna proporciona un valor de ejemplo de los parámetros.
    Parámetro Valor
    KeepAlive 300000 milisegundos
    KeepAliveInterval 10000 milisegundos
    TCPMaxDataRetransmissions 5
    El producto de base de datos también podría tener parámetros relevantes que puede configurar, por ejemplo, el parámetro IDLE THREAD TIMEOUT (tiempo de espera de hebra desocupada) en DB2 for z/OS.

    Cuando el servidor de bases de datos detecta la pérdida de la conexión con el servidor de aplicaciones, la base de datos libera los bloqueos en el almacén de datos. El motor de mensajería ahora puede acceder al almacén de datos y, por lo tanto, iniciarse correctamente.

  2. En el servidor de aplicaciones, ajuste el motor de mensajería para esperar una cantidad de tiempo apropiada para que el almacén de datos pase a estar disponible. De forma predeterminada, el motor de mensajería intentará conectarse al almacén de datos cada 2 segundos durante 15 minutos. Complete el resto de este paso si desea ajustar estos tiempos.
    1. Pulse Integración de servicios -> Buses -> nombre_bus -> [Topología] Motores de mensajería -> nombre_motor -> [Propiedades adicionales] Propiedades personalizadas para ir hasta el panel de propiedades personalizadas para el motor de mensajería.
    2. Pulse Nuevo.
    3. Escriba sib.msgstore.jdbcInitialDatasourceWaitTimeout en el campo Nombre y un valor apropiado en el campo Valor. Esta propiedad es el tiempo, en milisegundos, que se debe esperar a que el almacén de datos pase a estar disponible. El valor predeterminado es 900000 (15 minutos). Este tiempo incluye el tiempo necesario para establecer una conexión con la base de datos y para obtener los bloqueos de tabla necesarios.

      Asegúrese de que el valor de esta propiedad es mayor que el tiempo total que ha destinado el servidor de bases de datos para detectar la pérdida de una conexión de red, tal como está configurado en el paso 1.

    4. Pulse OK (Aceptar).
    5. Pulse Nuevo.
    6. Escriba sib.msgstore.jdbcStaleConnectionRetryDelay en el campo Nombre y un valor apropiado en el campo Valor. Esta propiedad es el tiempo, en milisegundos, que se debe esperar entre los intentos de conectarse al almacén de datos. El valor predeterminado es 2000 (2 segundos). Por ejemplo, si establece la propiedad sib.msgstore.jdbcInitialDatasourceWaitTimeout en 600000, y la propiedad sib.msgstore.jdbcStaleConnectionRetryDelay en 3000, el motor de mensajería intentará conectarse cada 3 segundos hasta que hayan pasado 10 minutos.
    7. Pulse OK (Aceptar).
    8. Guarde los cambios en la configuración maestra.
    9. Reinicie el servidor de aplicaciones.
    10. Si tiene un clúster, repita los pasos anteriores para añadir estas propiedades para cada motor de mensajería del clúster.

Resultados

Mediante la configuración de estos parámetros y propiedades personalizadas, minimiza la cantidad de tiempo destinada para el servidor de bases de datos para detectar la pérdida de una conexión de red, y se asegura de que el motor de mensajería espera una cantidad de tiempo razonable para que se recupere la conexión de la base de datos antes de intentar iniciarse.

Qué hacer a continuación

Es posible que desee configurar el motor de mensajería y el servidor para reiniciarse en el supuesto de una anomalía de la conexión de la base de datos. Este comportamiento reduce el riesgo de que el motor de mensajería esté en un estado incoherente cuando se restaura la conexión de base de datos.

Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjm_tunedbconn
File name: tjm_tunedbconn.html