2013-04-08 3 views
4

Essayer de diagnostiquer certaines erreurs de Tomcat 6 et/ou JVM bizarres sur une machine Linux 64 bits:processus Tomcat écrase soudainement

OS VERSION: Red Hat Enterprise Linux Server Version 6.3 (Santiago)
SERVEUR Modèle : VMWARE VIRTUAL PLATFORM()

Je suis en train d'exécuter des tests d'application sur des machines virtuelles et de faire face à un problème étrange. Le problème survient sur certaines machines virtuelles où exactement 2 processus sont en cours d'exécution: processus serveur Tomcat Application (processus Java) et un processus de surveillance, à un point aléatoire, après quelques heures d'exécution aléatoires le message suivant peut être trouvé sur catalina.out log) de la machine virtuelle qui échoue (le problème se produit ne marche pas toujours sur la même machine):

org.apache.coyote.http11.Http11Protocol pause 
INFO: Pausing Coyote HTTP/1.1 on http-50100 
INFO: Stopping service Catalina 
org.apache.coyote.http11.Http11Protocol destroy 
INFO: Stopping Coyote HTTP/1.1 on http-8080 

Après ce moment le processus Tomcat est shutted vers le bas et l'exécution échoue. Aucune sélection n'est visible sur la mémoire ou l'utilisation du processeur. Aucun message système ne peut être vu sous/var/logs.

  1. À première étape nous soupçonnions qu'un signal externe est en train de tuer notre processus Tomcat et nous avons essayé d'utiliser le drapeau -Xrs pour les arguments JVM du processus, mais problème se produisait encore.

    Le drapeau java (-xrs) devrait empêcher les signaux d'exception manipulation environnement d'exécution Java tels SIGSEGV et SIGABRT pas aider

    Avant d'ajouter xrs drapeau, nous avons vu une erreur INFO: Pausing Coyote HTTP/1.1 on http-50100 qui est arrivé parce que le signal de résultat

    Après avoir ajouté `xrs flag the kettle/tomcat se comporte de la même manière et écrase sans aucune erreur dans les fichiers journaux.

  2. Exécution commande starce sur le processus concerné nous donne le résultat suivant:

    processus 12917 attaché - interruption de quitter futex (0x7f6b9e8ab9d0, FUTEX_WAIT, 12918, NULLPANIC: attaché pid 12917 terminé avec 143

    Nous ne pouvons pas exécuter starce -f pour inclure tous les threads, car cela provoque le blocage de notre application Cependant, le processus de destruction du fils avec la commande kill se comporte de la même façon - nous voyons que le parent JVM sort avec le code d'erreur 143 et nous voyons aussi le signal envoyé au processus fils.

  3. Nous sommes également en cours d'exécution avec java -XX:+HeapDumpOnOutOfMemoryError pour créer un vidage de tas pour jvm crash en raison d'une erreur de mémoire insuffisante, mais aucune vidage de mémoire ou vidage de tas n'est crété en raison de l'écrasement.

Des idées?

+0

Je ne suis pas sûr qu'ils ont trouvé une solution - mais ce fil a un problème similaire - http://comments.gmane.org/gmane.comp.jakarta.tomcat.user/206745 –

+0

Tomcat reçoit-il des requêtes lors d'un plantage? Est-ce qu'il plante sans applications déployées? – fglez

+0

J'ai exécuté mon processus maintenant avec strace sur les signaux et ai obtenu la sortie suivante: 1 Processus 24631 joint - interruption pour quitter 2 --- SIGRT_2 (signal en temps réel 0) @ 0 (0) --- 3 rt_sigreturn (0x7fe4d8b39850) = 202 4 PANIC: pid 24631 attaché quitté avec 143 En ce qui concerne la demande je ne suis pas sûr, en fait dans le journal du serveur, nous pouvons voir une plaie de demande d'arrêt. –

Répondre

0

est-il possible, qu'avant le crash, il y ait une sorte de déplétion de mémoire, de sorte que le processus Java puisse être détruit par le MOO. En outre, j'ai trouvé un lien http://bugs.centos.org/view.php?id=4059 qui décrit un problème similaire.

+0

Après l'exécution du processus avec l'option -Xdump, nous avons récupéré les fichiers mais il semble qu'ils ne contiennent aucune information utile. Tous les outils de surveillance sur env ne nous montre aucun problème avec la mémoire. –

Questions connexes