Dépannage processus Java avec une très forte utilisation de l'UC - application Tomcat

J'ai une application java qui s'exécute sur le serveur Tomcat (qui s'exécute en tant que service sous Windows), le processus java pour qui continue de bouffer du CPU avant de finalement m'oblige à redémarrer le service Tomcat.

D'abord ma configuration:
Windows 2003 serveur
Tomcat 6, exécute en tant que service à l'aide de Wrapper
JDK: 1.6.0_20

J'ai été voir des captures problèmes ici et là menant jusqu'à hier. J'ai dû redémarrer midi d'hier, puis à 2:30 ce matin, puis aujourd'hui, j'arrivais à peine à redémarrer l'application et l'ouvrir jconsole à surveiller avant de frapper à 99% d'utilisation du PROCESSEUR de nouveau. Grâce à une combinaison de choses que je ne suis pas tout à fait sûr de, il semble que je suis la JVM de cycle de lui-même et l'application a été planant dans les 10 à 30% d'utilisation du PROCESSEUR de la gamme pour un couple d'heures. Toutefois, alors il a commencé à ramper vers le haut à nouveau, va enfin dans ses 99% d'utilisation du PROCESSEUR en panne. J'étais aussi de la difficulté avec l'utilisation de mémoire, mais qui est resté relativement normale et régulière depuis que j'ai soi-disant eu la JVM de "cycle" (mauvaise terminologie, peut-être, mais c'est vraiment ce qu'elle semble faire - et dans le journal wrapper il y avait un dump de toutes les classes qu'elle était en train de recharger après).

Ensuite, j'ai été de creuser autour et a trouvé un JRE 6 Update 24 installé sur le serveur (je n'ai pas l'installer car je doit faire un test avec chaque mise à jour java - mais peut-être que mon serveur admin fait la mise à jour). J'ai essayé, mais ne pouvez pas désinstaller cette. Ainsi, je reçois des différentes versions, quand je fais un java -version contre javac -version

java -version
    java version "1.6.0_24"
    Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
    Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode, sharing)

javac -version
    javac 1.6.0_20

Cette différence pourrait être à l'origine d'une JVM des conflits de toutes sortes? JAVA_HOME et mes variables de CHEMIN d'accès à la fois à la bonne installation du JDK.

En espérant pour plus de stabilité, j'ai décidé de changer mon application à exécuter sur le précédent JDK qui était encore installé JDK 1.6.0_04. J'ai changé le wrapper.conf, définir des variables d'environnement, nettoyé et reconstruit, et a commencé. Cela ne semble plus stable et a été en place pendant environ 4 heures. L'utilisation du CPU a grimpé à 90, elle semble s'effacer de lui-même à nouveau.

J'ai fait heapdumps puis a couru à travers la Mémoire de l'Analyseur dans Eclipse (rien de nouveau trouvé là), j'ai utilisé de la jconsole avec jtop à regarder threads - rien ne saute, donc pourquoi je continue à être curieux de savoir si c'est une java/jvm question. Donc, je sais que c'est un long post mais je ne sais vraiment pas où aller à partir d'ici. Des idées?

(Je l'ai fait exhaustive, la recherche sur le web sur ce et certains articles ont souligné, éventuellement, d'un Quartz d'émission ou mise en veille prolongée ne trouvez pas de rinçage. Rien n'a changé dans l'application depuis que j'ai commencé à voir le PROCESSEUR problèmes, donc je ne suis pas sûr de l'endroit où pour commencer le dépannage si il pourrait en effet être lié à l'un ou l'autre.)

OriginalL'auteur Nicole S. | 2011-08-12