Mon application Java EE 6 fonctionnant sous JBoss 6 a récemment commencé à avoir des problèmes de mémoire.Comment faire pour résoudre OutOfMemoryError dans JBoss?
Situation
- serveur de production.
- Application de taille petite à moyenne utilisant JPA2/Hibernate avec les paramètres de mise en cache par défaut. ~ 170 cours.
- Taille de la base de données ~ 1,8 Go, dont 90% appartiennent à des données binaires simplement récupérées par des servlets sans aucune mise en cache spéciale.
- délai d'attente de session a été récemment passé de 2 heures à 10.
- config JVM: -Xrs -Xms1024M -Xmx1024M -XX: MaxPermSize = 512M -Dsun.rmi.dgc.client.gcInterval = 3600000 -server
- JBoss fonctionnant en tant que service.
- Presque toutes les classes de contrôleur dans ViewScope
Deux questions avec ces faits à l'esprit:
Comment puis-je résoudre ces Oomes? JConsole ne trouve pas les machines virtuelles exécutées en tant que services. Idéalement, je devrais être capable d'inspecter des objets pertinents tels que des sessions pour trouver le voleur de mémoire.
Est-ce que cet OOME peut être légitime, avec l'augmentation du délai d'attente de session, et la solution consiste simplement à augmenter la taille du tas? L'application est utilisée depuis septembre 2011 sans aucun problème de mémoire. Le délai d'attente de la session a été considérablement augmenté il y a environ deux mois.
Désolé, je n'ai pas été plus loin avec ce problème avant, et il semble s'être résolu pour l'instant.Le paramètre de vidage de tas sera un bon point de départ si des problèmes apparaissent à nouveau, attacher VisualJVM et similaire à un serveur de production semble difficile. Quoi qu'il en soit, je vais accepter votre réponse, car il contient des conseils d'analyse tas. –