IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Wildfly/JBoss Java Discussion :

Détecter que le serveur va saturer pour le considérer comme indisponible, avant qu'il ne sature vraiment.


Sujet :

Wildfly/JBoss Java

  1. #1
    Membre habitué Avatar de Kimael
    Inscrit en
    Avril 2002
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 151
    Points : 159
    Points
    159
    Par défaut Détecter que le serveur va saturer pour le considérer comme indisponible, avant qu'il ne sature vraiment.
    Bonsoir à tous,

    j'aimerais trouver un moyen pour que JBoss se rende compte qu'il va bientôt saturer (un "out of memory" ne va pas tarder !) et se coupe alors tout seul, ou prévienne le load balancer Apache explicitement qu'il faut le considérer comme non-disponible.

    Le problème que j'ai aujourd'hui c'est que tant que la connexion entre le Apache et JBoss persiste, Apache ne considère pas le JBoss comme "indisponible" alors qu'il n'arrive plus à répondre aux requêtes des utilisateurs.
    Ça se finit en "kill -9" avec pour conséquences des transactions Oracle mal terminées (2 PC) qui polluent ensuite, etc.

    Avez-vous des pistes à me proposer pour que je fouille ?
    J'imagine qu'il y a un mécanisme que je ne connais pas ou utilise mal.

    Merci de votre aide

    --
    Mickaël
    Membre du comité "Mort aux cons ! ARG..."
    Plus on essaye, et plus on a de chances de réussir... proverbe Shadok.
    Pensez au tag [Résolu], merci.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    La méthode la plus efficace que je connaisse c'est d'analyser pourquoi le serveur sature afin d'effectuer les corrections nécessaires (consommation mémoire, réduction du nombre de thread de service, gestion correcte des transaction, ...)

    Il n'y a pas de moyen miracle de détecter qu'on arrive en out of memory pour une bonne raison, ça peux survenir à partir de rien :p


    Maintenant, tu peux avoir de l'aide, avec par exemple les MemoryMXBean qui peuvent t'envoyer des events quand certains niveaux sont dépassés. Mais ce n'est pas juste à partir de ça que tu arrivera à sauver la machine. Tu peux avoir de nombreux dépassements sans importances tout comme tu peux avoir un outofmemory au premier dépassement.

    Tu parle de rajouter des machines au pool, mais démarrer un jboss avec les applications qui sont dedans, ça prend entre 2 et 10 minutes en général. C'est trop lent de toutes façons pour absorber un pic.

    Le plus important selon moi, c'est d'analyser combien occupe de mémoire une requête en moyenne, calculer combien tu peux donc en traiter raisonnablement en paramètre, et ensuite configurer le jboss pour ne pas traiter plus de ce nombre de requete en parallèle.

  3. #3
    Membre habitué Avatar de Kimael
    Inscrit en
    Avril 2002
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 151
    Points : 159
    Points
    159
    Par défaut
    Bonjour tchize_

    et merci pour ta réponse, mais c'est en partie un peu à côté

    Je ne cherche pas ici à trouver un moyen d'éviter les soucis, mais un moyen pour qu'une instance qui a des soucis puisse être considérée comme indisponible par le load balancer (Apache + mod_jk).
    Aujourd'hui ce qui se passe c'est que petit à petit elle ne répond plus assez vite (puis plus du tout à cause des jeux de timeout) aux utilisateurs, alors que le load balancer continue de lui envoyer des requêtes ...

    Comme je le disais, l'hébergeur n'arrive souvent même plus à l'éteindre proprement et fait du "kill -9", etc.


    Par contre, évidemment pendant ce temps l'équipe dont je fais parti a cherché (et trouvé \o/ ) pourquoi les instances se sont mises à tomber à cause de problèmes de OOM, etc.


    Je vais regarder "MemoryMXBean", merci beaucoup.

    Enfin, je n'ai pas compris pourquoi tu parles de "rajouter des machines au pool"... ce qui est exclu en l'occurrence.


    Du côté de "configurer le jboss pour ne pas traiter plus de ce nombre de requete en parallèle", ce n'est pas ce que je cherche non plus... car c'est déjà fait et le hic c'est que les instances tombent alors qu'elles ne devraient pas

    Merci encore.
    Membre du comité "Mort aux cons ! ARG..."
    Plus on essaye, et plus on a de chances de réussir... proverbe Shadok.
    Pensez au tag [Résolu], merci.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    pour savoir si une instance marche toujours, le plus simple est de la monitorer en extérieur, en créant un requête sur cette instance spécifique (et non sur le load balancer) et en regardant le temps de réponse déterminer si oui ou non il faut redémarrer cette instance.

    J'ai parlé de rajouter des machines au pool parce que je ne voyais pas trop quelle autre option tu envisageait une fois que tu avais déterminé qu'il y avait un problème.

    Maintenant, tu dis que les machines ralentissent progressivement, n'est-ce pas (oui c'est moche) possible de redémarrer les instances tous les jours, chacune à une heure différente pour ne pas affecter la charge?

    Mais tout ça n'est que de l'emplâtre en attendant que le problème de font (bugs dans la webapplication) soit corrigé par l'équipe de dev

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/02/2015, 22h33
  2. [RMI] Détecter dans le client que le serveur s'est éteint
    Par alex2746 dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 13/01/2013, 20h37
  3. [WS 2008] Mais quand est-ce que ce serveur a démarré pour la dernière fois ?
    Par Jon Shannow dans le forum Windows Serveur
    Réponses: 4
    Dernier message: 10/11/2011, 09h40
  4. Réponses: 0
    Dernier message: 15/08/2007, 17h36
  5. Réponses: 3
    Dernier message: 06/12/2004, 13h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo