Tomcat se ferme aléatoirement avec une pause AbstractProtocol après un léger usage
Après l'exécution de mon application web pour un certain temps (durée varie entre les heures et les jours en fonction de la circulation) Tomcat apparemment au hasard s'arrête lui-même. Il n'y a rien hors de l'ordinaire dans le journal avant que cela n'arrive (pas d'exception) tout à fait normal d'INFO trucs que mon application émet.
Peut aider quelqu'sur la meilleure façon de débogage? Il n'y a rien dans Tomcat qui déclencherait la AbstractProtocol pause
signal?
Journaux:
09-Nov-2011 21:40:19 org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-bio-80"]
09-Nov-2011 21:40:20 org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["ajp-bio-8009"]
09-Nov-2011 21:40:21 org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service Catalina
Version de Java: 1.6.0_25-b06
Tomcat version:6
source d'informationauteur Sig
Vous devez vous connecter pour publier un commentaire.
J'ai vu cela avant et les journaux peuvent être parfois cryptique. Je remarque cependant que vous êtes en cours d'exécution sur le Port 80 (qui est une autre question) ce qui me laisse à croire que vous avez modifié votre server.xml. S'il existe plusieurs instances tomcat sur le serveur de s'assurer qu'ils ont tous un unique arrêt ports. Le port standard est 8005 et si plusieurs instances sont à l'écoute sur le même port, il est possible de les prendre tous les deux vers le bas.
Il pourrait y avoir un Système aléatoire.exit() dans votre code ou dans un effet de levier de la bibliothèque ou vous êtes mal à réprimer le vrai message d'erreur dans votre code. J'ai vu beaucoup de fois que les gens d'écrire des contrôleurs comme une forme d'erreur de manipulation:
Cela permet de maintenir le véritable erreur de remonter ou même bon de journalisation.
J'ai vu aussi des serveurs tomcat juste cesser de fonctionner quand ils ont frappé les limites de la mémoire. Il y aura un Espace de Tas d'erreur quelque part dans les journaux, mais pour une raison que je trouve que cela peut se faire enterrer assez facilement et tout ce qui sera à gauche sera la pause messages. Il pourrait être intéressant de regarder dans le localhost.journal en plus de la catalina.. Il y a généralement moins de déchets.
Notre tomcat a été mystérieusement arrêter parce que notre script personnalisé a commencé d'origine startup.sh (sans nohup) et a continué à faire quelques temps des trucs.
Personne qui a invoqué script personnalisé utilisé ctrl-Z pour le mettre en arrière-plan, puis fermé mastic terminal. Cela envoie un signal SIGHUP à tous les processus attachés à la borne et tomcat obtenu l'arrêt.
Souhaitez tomcat avait imprimé un message au sujet de la réception d'un signal SIGHUP.
Plus tard, nous avons trouvé ce lien qui confirme notre analyse.
http://solveissue.com/note?id=1767204
Si vous travaillez sur la boîte de production ou voulez un moyen rapide/correctif temporaire puis vous pouvez définir votre arrêt port server.xml à "-1", qui permet de désactiver la commande d'arrêt. Ce ne sera pas permettre à d'autres applications, qui pourrait être d'avoir le même arrêt port, d'envoyer un signal d'arrêt à votre instance de tomcat.
Mais avec ce paramètre, vous devrez tuer vous tomcat au lieu de l'arrêter. C'est la mauvaise partie.
Nous avons ce problème lorsque logrotate envoie un "kill-HUP" pour le processus Apache et Tomcat a été engendré par Apache: Apache va tuer tous ses enfants lorsqu'il reçoit le signal HUP.