2010-02-19 16 views
3

Notre serveur Tomcat s'est arrêté de manière inattendue. (Il s'exécute en tant que service Windows, le journal des événements système affiche une erreur: ID d'événement 7034).Fichier de vidage sur incident Tomcat ou JVM?

Où puis-je trouver un vidage d'un plantage JVM ou une indication de la raison pour laquelle le service Tomcat a réellement cessé de fonctionner?

Je vois un certain nombre d'exceptions dans notre journal d'application (notre framework web, Wicket est incapable de sérialiser certaines de nos pages sur le disque à cause d'une exception NotSerializableException). Je devine que c'est un effet secondaire du service essayant de fermer (parce que nous avons des objets non-sérialisables dans nos pages). Ce n'est pas clair pour moi ce qui a déclenché la fermeture du service.

J'ai vérifié les endroits suivants:

  • journal des applications
  • accès journal
  • stdout journal
  • stderr journal
  • tomcat.log
  • jakarta_service log

Je ne vois rien qui indique que Tomcat s'arrête ou qu'une erreur VM s'est produite. Je vois certaines erreurs réseau liées à SQL Server dans l'événement d'application Windows, mais cela s'est produit presque 20 minutes plus tard.

Des indices?

+1

Fait cette question wiki communautaire, pour que les autres peuvent apporter des changements, car je ne travaille pas sur ce problème dès le moment. – RMorrisey

Répondre

0

J'ai le même problème. Vous obtiendrez un fichier hs_err lorsqu'un appel jni (en code natif) est effectué et qu'une erreur y est rencontrée (par exemple, accès illégal à la mémoire ou erreur de segmentation). Nous ne trouvons pas de fichier hs_err et aucune erreur n'est affichée pour le stderr comme cela se produit normalement dans cette situation. Nous savons que le statut de sortie du processus Tomcat était de 134 (x86), ce qui, je crois, indique un signal d'abandon. Cela se produira si vous appelez la méthode stdlib 'abort()' dans votre code. Je crois que quelque part dans notre code natif jni nous appelons 'abort()'. Malheureusement, il ne semble pas y avoir un bon moyen de trouver où. Si je pouvais peut-être générer un core dump à partir de Tomcat quand il sortirait, j'aurais quelque chose à faire.

Il est peu probable qu'une exception Java déclenchée provoque l'arrêt de Tomcat. Avez-vous un code JNI et est-il possible que vous appeliez abort()? Aussi, est-il possible que vous ayez un appel Java quelque part à System.exit()?

0

Assurez-vous que votre tomcat ne fonctionne pas en mode débogage. Si c'est le cas, vous devez désactiver le débogage pour arrêter votre service Tomcat.

Vous pouvez le voir dans votre tomcat6.conf. Vous devez commenter la ligne similaire à:

#JAVA_OPTS="-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4142,suspend=n" 

Le vous pouvez stop/restart votre tomcat.

Bye