2009-11-23 11 views
2

Parfois, quand je redéployer guerre trop de fois, jboss donne java.lang.OutOfMemoryError: PermGen espace erreur, est-il possible de surveiller jboss avec un autre programme Java qui est exécuté pas à l'intérieur jboss, pour vous assurer qu'il n'a pas Exécutez ot de la mémoire et si c'est le cas, redémarrez automatiquement jboss?Est-il possible de surveiller jboss s'il manque de mémoire?

+0

interressant, même comportement qu'avec tomcat ... peut-être que jboss a tomcat derrière? Ou c'est quelque chose avec Java? –

+0

C'est à cause de classloader jboss, je ne sais pas si Tomcat a smae "caractéristique" http://stackoverflow.com/questions/1307080/jboss-4-0-2-deploying-same-war-multiple-times -causes-jboss-to-crash-for-of-pe – newbie

Répondre

2

Je suppose que vous pouvez surveiller la consommation de mémoire via JMX et le MemoryMXBean. Vous pouvez le faire de manière interactive via JConsole, ou codez un simple moniteur pour le faire automatiquement.

Here's some details sur comment faire cela en cours de processus, mais vous pouvez également le faire à distance. Voir les documents JMX pour plus d'informations.

Alternativement, vous pouvez exécuter un processus sous JavaServiceWrapper, et l'amener à arrêter/redémarrer un processus en fonction des messages sortants de stdout/err. Cela peut être un moyen simple d'effectuer votre redémarrage automatiquement. Cependant, je préférerais utiliser la solution JMX à long terme afin que vous puissiez être prévenu des problèmes (et peut-être les lier à leur cause sous-jacente).

+0

Au moment où OutOfMemoryExceptions commence à voler, ne répondra-t-il pas aux appels JMX à distance? Vous n'obtiendrez pas de notifications aussi intéressantes car votre client JMX commencera à recevoir des exceptions de délai de connexion. –

1

Je suggérerais HypericHQ. C'est une très bonne application autonome qui peut surveiller vos instances JBoss, vous alerter quand le permgen ou le tas devient bas, et même déclencher un redémarrage si nécessaire. C'est une bête complexe, mais qui vaut l'investissement.