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

Tomcat et TomEE Java Discussion :

"tomcat stop" n'arrête pas réellement tomcat


Sujet :

Tomcat et TomEE Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 48
    Points : 37
    Points
    37
    Par défaut "tomcat stop" n'arrête pas réellement tomcat
    Bonjour,

    quelquefois je n'arrive pas à arrêter le serveur tomcat en faisant

    /etc/init.d/tomcat stop

    (de mémoire cette commande me renvoie une bind exception et) en faisant un "ps -edf" je me rends compte que le process est toujours là.

    Ce problème m'est arrivé en fait plusieurs fois (mais je ne m'en rends jamais compte tout suite,malheureusement), j'ai peut être une explication : peut-être ais-je arrêté à un moment ou à un autre le serveur tomcat et je l'ai redémarré trop vite avant que le processus précédent ne soit réellement arrêté.

    Effectivement j'ai remarqué qu'après le tomcat stop le process tomcat, lui, est encore là quelques secondes ou millisecondes (ce que je trouve moyen de la part de tomcat d'ailleurs).

    Avez-vous des retours d'expériences sur ce genre de problème ?

  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
    alors, le stop conciste à se connecter au port de maintenance de tomcat et à lui envoyer l'instruction "stop". De là tomcat décharge toutes ses webapps une à une, et cloture tout ses thread. Ensuite, la jvm devrait s'arreter. La commande de stop, en elle meme retourn imédiatement. Le process d'arret des webapp dépend de celles-ci, et peux varier de quelques secondes à plusieurs minutes suivant la taille des webapps. Si, après çà, tomcat tourne encore, c'est souvent que la webapp a d'elle meme instancié des threads (pas bien mais on a pas toujours le choix) et ne les a pas cloturé. Un jvm ne s'arrette pas d'elle même tant que tout ses threads ne sont pas morts.

    Ce qui se passe parfios c'est qu'un tomcat se bloque (faute à la webapp) et ne réagisse dont plus au stop. Faut alors passer par kill.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 48
    Points : 37
    Points
    37
    Par défaut
    ok merci pour cette explication.

    Pour les threads tout à fait cela ne métonne pas, on utilise un thread pool executor en interne et il y a aussi jboss cache qui a ses propres threads, du coup j'aimerais savoir qui n'arrête pas ses threads correctement. Vous rapelleriez vous quelle commande permet d'avoir un instantané des threads en cours dans la jvm ?

  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
    kill -3 sous unix

  5. #5
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 48
    Points : 37
    Points
    37
    Par défaut
    humm je pensais pas à cela, je vais essayer de me renseigner (de mémoire c'est kill -sig ou java -sig).

  6. #6
    Membre régulier
    Profil pro
    Développeur Java
    Inscrit en
    Août 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 58
    Points : 92
    Points
    92
    Par défaut
    Par expérience, j'ai vu qu'il fallait laisser le temps à tomcat de s'arrêter, tant qu'il est dans les processus (un petit ps -aux | grep tomcat pour regarder) il ne faut surtout pas lancer le start.

    Après y a toujours moyen de bidouiller le script /etc/init.d/tomcat, mais là ça deviens plus subtile. Sur un script de déploiement, j'ai du rajouter un sleep de près de 2mn pour le stop et le start pour éviter les problèmes.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 48
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par gexian Voir le message
    Par expérience, j'ai vu qu'il fallait laisser le temps à tomcat de s'arrêter, tant qu'il est dans les processus (un petit ps -aux | grep tomcat pour regarder) il ne faut surtout pas lancer le start.

    Après y a toujours moyen de bidouiller le script /etc/init.d/tomcat, mais là ça deviens plus subtile. Sur un script de déploiement, j'ai du rajouter un sleep de près de 2mn pour le stop et le start pour éviter les problèmes.
    Oui exact en fait les thread dans les pool de java.util.concurrent ont un temps apellé keepAliveTime qui est le temps pendant lequel même si le thread n'est pas utilisé il est gardé en vie. Donc si l'application n'apelle pas le shutdown sur le pool il n'y a pas d'autre choix que d'attendre si il y avait encore de l'activité dans les n derniers instants avant l'appel à tomcat stop. Personnellement, j'ai mis cette valeur à 20 secondes (je n'apelle pas shutdown, c'est un choix). La valeur par défaut c'est 60 secondes je crois.

    Mais je recherche tooujours cette commande magique qui me permettra la prochaine fois que ca arrive (si ca arrive) de voir les threads existants dans la jvm.

  8. #8
    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
    je te l'ai donnée la commande :/ Y a pas 36.000 commande sous linux / unix, faut envoyer le signal 3 à la jvm, elle fait alors un Thread dump dans stdout. (Soit donc au final dans catalina.out)

  9. #9
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 48
    Points : 37
    Points
    37
    Par défaut
    oui désolé, tu as raison. et c'est bien cela ca se retrouvait dans le catalina.out.
    (ce qui m'a trompé c'est que je l'avais taper comme ca "kill -SIGQUIT pid" ce qui est exactement pareil).

Discussions similaires

  1. [FLASH MX2004] Clip qui ne s'arrête pas
    Par romain starck dans le forum ActionScript 1 & ActionScript 2
    Réponses: 8
    Dernier message: 10/05/2006, 19h43
  2. [tomcat] JSP modifiée ne sont pas recompilées....
    Par snoop dans le forum Eclipse Java
    Réponses: 14
    Dernier message: 02/05/2005, 08h23
  3. [Tomcat] [Eclipse] : Servlet n'est pas disponible
    Par mmed dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 13/01/2005, 11h44

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