Pourquoi Tomcat 5.5 (avec Java 1.4, fonctionnant sous Windows XP 32 bits) se bloque-t-il soudainement?

StackOverflow https://stackoverflow.com/questions/66104

  •  09-06-2019
  •  | 
  •  

Question

Je fais fonctionner Tomcat 5.5 avec Java 1.4 depuis un certain temps avec une énorme application Web. La plupart du temps, tout fonctionne bien, mais parfois, il se bloque, sans exception, ni moyen apparent de le faire fonctionner à part redémarrer Tomcat. L'instance de tomcat dispose d'un gigaoctet de mémoire sur le tas, mais dépasse rarement 300 Mo. Quelqu'un at-il rencontré ce problème et existe-t-il une solution à ce problème?

Pour plus d’information: j’ai déterminé la quantité de mémoire utilisée par le Gestionnaire des tâches et par Eclipse (j’ai également essayé de l’exécuter en dehors d’Eclipse, mais le problème persiste, bien que cela prenne un peu plus longtemps). Avec Eclipse, je regarde la mémoire allouée via son petit volet (facultatif) et le montant alloué à javaw.exe via le gestionnaire de tâches. J'utilise le sysdeo? plugin tomcat pour Eclipse.

Était-ce utile?

La solution

Pour tout processus JVM, forcez un vidage de thread. Dans les fenêtres, cela peut être fait avec CTRL-BREAK, je crois, dans la fenêtre de la console.

Dans * nix, il est presque toujours "kill -3 jvm-pid".

Ceci peut indiquer si des threads attendent sur le pool de connexions à la base de données / pool de threads, etc.

Une autre chose à vérifier est le nombre de connexions que vous avez actuellement à la machine virtuelle Java - utilisez soit NETSTAT, soit un utilitaire SysInternals tel que tcpconn / tcpview (google it).

Essayez également de vous lancer avec l’indicateur de JVM verbose: gc. Pour la machine virtuelle Java de Sun, exécutez la commande "java -verbose: gc". Cela montrera vos collectes de déchets. S'il collecte beaucoup (COLLECTIONS COMPLETES, spécialement), vous avez probablement une fuite de mémoire. Les collections complètes sont coûteuses, en particulier pour les grands tas comme celui-là.

Comment déterminez-vous que seuls 300 Mo sont utilisés?

Autres conseils

On dirait que vous vous retrouvez dans une impasse.

Si vous pouvez le reproduire dans un environnement de développement, essayez d’attacher un débogueur une fois que cela est arrivé. Regardez vos discussions et voyez si vous avez des blocages.

Si vous ne parvenez pas à attacher un débogueur, vous devriez pouvoir générer un vidage de thread, comme l'a souligné Dustin.

Essayez d’augmenter la sensibilité de la journalisation pour le serveur d’applications Tomcat. http://tomcat.apache.org/tomcat-5.5-doc/logging. html

Vous pouvez augmenter la sensibilité à FINEST ou ALL pour la plupart d'entre eux pendant quelques jours et voir si cela vous aide à attraper quelque chose.

Je suis d'accord avec la création de plusieurs vidages de threads et leur affichage: Analyseur de vidage de fil

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top