Optimisation de la détection de la perte d'une connexion de base de données

Si un moteur de messagerie est configuré pour utiliser un magasin de données et ne peut pas se connecter à son magasin de données, par exemple, lorsque la base de données qui contient le magasin de données n'est pas active, le moteur de messagerie ne démarre pas. Vous pouvez optimiser votre système afin d'augmenter les chances que le moteur de messagerie démarre correctement.

Pourquoi et quand exécuter cette tâche

Dans un environnement comportant un seul serveur, lorsque vous démarrez le serveur d'applications, le moteur de messagerie tente de démarrer. Lorsque la base de données est indisponible pendant plus de 15 minutes, il se peut que le moteur de messagerie passe à l'état Arrêté et qu'il doive être démarré manuellement.

Dans un environnement à haute disponibilité, un moteur de messagerie démarre en même temps que le serveur ou le cluster ou lors du processus de reprise en ligne. Lors du démarrage du moteur de messagerie, celui-ci tente de se connecter au magasin de données, pendant un délai maximum de 15 minutes par défaut. Si l'une des conditions suivantes est vraie pendant cette période, le moteur de messagerie ne peut pas démarrer sur le serveur, et la haute disponibilité est désactivée pour ce dernier :
  • La base de données est indisponible ou inactive.
  • Dans une situation de reprise en ligne, la base de données ne détecte pas la perte de la connexion réseau au serveur d'applications d'origine, et par conséquent, elle ne libère pas les verrous sur le magasin de données.
Cet état désactivé peut se propager à tous les membres du cluster. Vous devez réactiver manuellement les serveurs pour conserver votre environnement à haute disponibilité.

Vous pouvez augmenter les chances de démarrage de votre moteur de messagerie en configurant divers paramètres, tels que le délai d'attente par défaut de 15 minutes, sur le serveur de base de données ou le serveur d'applications.

Procédure

  1. Sur le serveur de base de données, configurez le système d'exploitation afin de réduire le temps nécessaire à la détection de la perte d'une connexion réseau à un serveur d'applications. Pour plus d'informations, voir la documentation relative au système d'exploitation. Par exemple, le tableau suivant répertorie les paramètres appropriés pour les systèmes d'exploitation Windows et AIX :
    Tableau 1. Paramètres TCP/IP. La première colonne du tableau contient la liste des paramètres TCP/IP pour les systèmes d'exploitation Windows. La deuxième colonne du tableau contient la liste des paramètres TCP/IP pour les systèmes d'exploitation AIX. La troisième colonne fournit une description des paramètres.
    Nom de paramètre sur les systèmes d'exploitation Windows Nom de paramètre sur les systèmes d'exploitation AIX Description
    KeepAliveTime tcp_keepidle Délai (en millisecondes sur des systèmes d'exploitation Windows et en demi-secondes sur des systèmes d'exploitation AIX) à observer avant d'envoyer une demande keepalive pour une connexion inactive.
    KeepAliveInterval tcp_keepintvl Délai (en millisecondes sur des systèmes d'exploitation Windows et en demi-secondes sur des systèmes d'exploitation AIX) à observer avant d'obtenir une réponse.
    TCPMaxDataRetransmissions tcp_keepcnt Nombre de demandes à envoyer avant de mettre fin à la connexion.
    Vous pouvez calculer le temps total nécessaire au serveur de base de données pour détecter l'échec de la connexion au serveur d'applications, à l'aide de la formule suivante :

    temps nécessaire pour détecter l'échec de la connexion = intervalle d'éléments actifs + (intervalle d'éléments actifs x nombre de demandes)

    Par exemple, pour un système Windows dont les paramètres sont définis selon le tableau suivant, le temps total nécessaire au serveur de base de données pour détecter l'échec de la connexion au serveur d'applications est de 350 secondes.
    Tableau 2. Exemples de valeurs de paramètre. La première colonne répertorie les noms de paramètre. La seconde colonne contient un exemple de valeur pour les paramètres.
    Paramètre Valeur
    KeepAlive 300000 millisecondes
    KeepAliveInterval 10000 millisecondes
    TCPMaxDataRetransmissions 5
    Vous pouvez également configurer d'autres paramètres susceptibles d'être pertinents pour votre produit base de données, par exemple, IDLE THREAD TIMEOUT dans DB2 for z/OS.

    Lorsque le serveur de base de données détecte la perte de la connexion au serveur d'applications, la base de données libère les verrous sur le magasin de données. Le moteur de messagerie peut désormais accéder au magasin de données et, par conséquent, démarrer correctement.

  2. Sur le serveur d'applications, réglez le moteur de messagerie pour qu'il attende pendant un certain temps que le magasin de données devienne disponible. Par défaut, le moteur de messagerie tente de se connecter au magasin de données toutes les 2 secondes pendant 15 minutes. Exécutez le reste de cette étape si vous souhaitez régler ces délais.
    1. Cliquez sur Intégration des services -> Bus -> nom_bus -> [Topologie] Moteurs de messagerie -> nom_moteur -> [Propriétés supplémentaires] Propriétés personnalisées pour accéder au panneau de propriétés personnalisées du moteur de messagerie.
    2. Cliquez sur Nouveau.
    3. Tapez sib.msgstore.jdbcInitialDatasourceWaitTimeout dans la zone Nom et entrez une valeur appropriée dans la zone valeur. Cette propriété correspond au délai, en millisecondes, à observer avant que le magasin de données devienne disponible. La valeur par défaut est 900000 (15 minutes). Ce délai tient compte de la durée nécessaire à l'établissement de la connexion à la base de données et à l'obtention des verrouillages de table requis.

      Assurez-vous que la valeur de cette propriété est supérieure à la durée totale nécessaire à la détection de la perte d'une connexion réseau par le serveur de base de données, telle que configurée à l'étape 1.

    4. Cliquez sur OK.
    5. Cliquez sur Nouveau.
    6. Tapez sib.msgstore.jdbcStaleConnectionRetryDelay dans la zone Nom et entrez une valeur appropriée dans la zone Valeur. Cette propriété correspond à la durée, en millisecondes, à observer entre les tentatives de connexion au magasin de données. La valeur par défaut est 2000 (2 secondes). Par exemple, si vous affectez la valeur 600000 à la propriété sib.msgstore.jdbcInitialDatasourceWaitTimeout et la valeur 3000 à la propriété sib.msgstore.jdbcStaleConnectionRetryDelay, le moteur de messagerie tente de se connecter toutes les 3 secondes pendant 10 minutes.
    7. Cliquez sur OK.
    8. Sauvegardez les modifications de la configuration principale.
    9. Redémarrez le serveur d'applications.
    10. Si vous disposez d'un cluster, répétez les étapes précédentes pour ajouter ces propriétés à chaque moteur de messagerie du cluster.

Résultats

En configurant ces paramètres et ces propriétés personnalisées, vous réduisez le temps nécessaire au serveur de base de données pour détecter la perte d'une connexion réseau et vous faites en sorte que le moteur de messagerie attende la reprise de la connexion de base de données pendant un délai raisonnable avant de tenter de démarrer.

Que faire ensuite

Vous pouvez souhaiter configurer le moteur de messagerie et le serveur pour qu'ils redémarrent en cas d'échec d'une connexion de base de données. Ce comportement réduit le risque que le moteur de messagerie se trouve dans un état incohérent lorsque la connexion de base de données est restaurée.

Icône indiquant le type de rubrique Rubrique de tâche



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjm_tunedbconn
Nom du fichier : tjm_tunedbconn.html