Le Java Service Wrapper inclut plusieurs fonctionnalités pour surveiller, rétablir et vous notifier lorsque des problèmes surviennent. Ces fonctionnalités fonctionnent de concert pour vous aider à garantir une disponibilité maximale de votre application, tout en vous tenant informé des problèmes et, lorsque cela est possible, de leurs causes.

Détails

Détection des deadlocks

Deadlock

Les deadlocks de threads sont possibles dans toute application Java multithread. Ils peuvent être très difficiles à corriger et presque impossibles à reproduire dans la plupart des applications réelles. Cela s'explique par le fait que plus le nombre de threads utilisés est élevé, plus un deadlock est susceptible de se produire. Un développeur peut avoir beaucoup de mal à déterminer non seulement l'endroit où le deadlock s'est produit, mais aussi la combinaison d'événements qui y a mené.

Si vous souhaitez en savoir plus sur cette fonctionnalité, veuillez consulter notre section technique.

Détection automatique du gel de la JVM

En fonctionnement normal, le Wrapper envoie un ping à la JVM une fois toutes les 5 secondes pour s'assurer que son processus n'est pas gelé. Le ping timeout est le temps accordé pour obtenir une réponse de la JVM avant que le Wrapper ne considère qu'elle est bloquée et ne la redémarre.

Le Java Service Wrapper est capable de détecter très rapidement la plupart des gels de JVM et de redémarrer l'application. Un rapport de ce qui s'est passé est généré et envoyé, afin qu'un administrateur puisse vérifier que tout fonctionne correctement.

Comment le Java Service Wrapper détecte-t-il un gel de JVM ? Veuillez consulter notre page de propriété ping timeout. Comme chaque application Java est différente, ces paramètres peuvent être configurés ou désactivés.

Si vous souhaitez en savoir plus sur cette fonctionnalité, veuillez consulter notre section technique.

Détection automatique du plantage de la JVM

Le Wrapper surveille en permanence le processus JVM et est capable de détecter instantanément si le processus JVM plante, puis de le redémarrer afin de minimiser le temps d'indisponibilité. Par défaut, le Wrapper attend 5 secondes avant de relancer automatiquement votre application.

La durée de ce délai peut être ajustée selon vos besoins, mais il est recommandé de s'assurer que le système d'exploitation a le temps de libérer toute mémoire ou autres ressources associées à la JVM plantée. Veuillez consulter la propriété wrapper.restart.delay pour plus d'informations.

Si vous souhaitez en savoir plus sur cette fonctionnalité, veuillez consulter notre section technique.

Redémarrages de JVM à la demande

Le Java Service Wrapper offre à une application Java un moyen de demander le redémarrage de sa propre JVM. Cela peut s'avérer utile dans de nombreux cas. Les applications peuvent souhaiter redémarrer après la modification de leurs fichiers de configuration. Ou l'application peut simplement avoir besoin d'être redémarrée pour éviter des problèmes liés à une fuite de mémoire ou de ressources.

Les redémarrages de JVM peuvent être déclenchés depuis l'intérieur de la JVM en appelant WrapperManager.restart(). Pour plus d'informations, veuillez consulter notre documentation de l'API Java. Il existe également des moyens plus passifs de déclencher des redémarrages. Pour plus d'informations, consultez notre page d'introduction.

Si vous souhaitez en savoir plus sur cette fonctionnalité, veuillez consulter notre section technique.

Notifications par e-mail

Deadlock

Des e-mails peuvent être envoyés avec un message personnalisé, ainsi qu'un extrait du fichier journal du Wrapper. Cela permet à un administrateur système de décider s'il est nécessaire ou non de prendre des mesures supplémentaires.

Le Wrapper est capable d'envoyer des e-mails d'alerte en réponse à certains événements. Pour des exemples et plus d'informations, veuillez consulter notre page de documentation des e-mails d'événements.

Si vous souhaitez en savoir plus sur cette fonctionnalité, veuillez consulter notre section technique.

Actions définies par l'utilisateur

Les filtres sont une fonctionnalité très puissante qui permet d'ajouter un nouveau comportement à des applications existantes sans aucun codage. Ils fonctionnent en surveillant la sortie console d'une JVM à la recherche de séquences de texte. Lorsqu'elles sont trouvées, un nombre quelconque d'actions peut alors être entrepris.

Des commandes système, y compris des scripts externes, peuvent être exécutées en réponse à n'importe quel événement. Elles peuvent être utiles pour effectuer un nettoyage du système, envoyer des notifications ou entreprendre des actions qui ne peuvent être gérées que de manière native. Ajouter un filtre est facile : il vous suffit de spécifier un déclencheur et une action, et vous pouvez en configurer autant que vous le souhaitez. Si vous souhaitez en savoir plus sur notre système de filtres et consulter une liste des actions possibles, veuillez consulter notre page de propriété des filtres.

Suspension/reprise des délais d'attente de la JVM

Le Wrapper utilise divers délais d'attente lors de la surveillance de la JVM. Chaque fois qu'un délai d'attente est dépassé, le Wrapper peut entreprendre des actions ou forcer la JVM à passer à l'état suivant. La plupart des délais d'attente peuvent être configurés avec des valeurs indiquant au Wrapper le temps prévu dont votre application a besoin pour démarrer, s'arrêter et répondre dans des situations normales.

Dans de rares cas, cependant, vous pouvez souhaiter exécuter depuis votre code Java des tâches bloquantes de longue durée, ce qui rendrait temporairement la JVM non réactive. Afin d'empêcher le Wrapper de détecter cela comme un gel de JVM, il peut être utile de suspendre les délais d'attente avant de démarrer la tâche et de les reprendre une fois celle-ci terminée.

Cela est possible à partir des versions 3.5.40 et ultérieures, en utilisant le fichier de commandes, les actions déclenchées par des filtres, des timers, des vérifications de deadlocks, ou depuis le code Java en utilisant les nouvelles méthodes WrapperManager.suspendTimeouts() et WrapperManager.resumeTimeouts().

Veuillez consulter les liens ci-dessus pour plus de détails sur la méthode de votre choix pour suspendre/reprendre les délais d'attente.