[Résolu] Paramétrer le "Java heap space" sur Tomcat

Paramétrer le "Java heap space" sur Tomcat [Résolu] - Java - Programmation

Marsh Posté le 31-10-2008 à 11:23:34    

Je maintiens une appli sur serveur Windows 2003 + Apache-Tomcat. Depuis quelques temps, probablement avec l'augmentation des connections, des erreurs apparaissent au chargement des pages web. Sans compter des temps de chargement très long.
 
Les fichier stdout*.log généré par le serveur font apparaitre de nombreux messages :

13/10/08 08:27:31 expandTemplate 'CRI.jsp' : Java heap space

et plus rarement :

Exception in thread "Thread-2" java.lang.OutOfMemoryError: Java heap space


En cherchant sur internet, j'ai trouvé qu'il fallait augmenter la taille du "java heap space" avec le paramètre "-Xmx <taille>". Ok, mais impossible de trouver où ! Je ne trouve pas de fichier "startup.sh", pas de scripts de lancement de Tomcat pour fixer la valeur de "CATALINA_OPTS =" ou autres.
 
Donc mes questions sont :
- où régler ce paramètre dans une install Win2003 + Tomcat ?
- quelle est la valeur par défaut ?
- comment vérifier si la nouvelle valeur est bien prise en compte ?
 
Merci pour vos réponses.
 
Ooops, un oubli : la version de Tomcat est la v5.5.25 / JVM v1.6.0b105


Message édité par lsdYoYo le 31-10-2008 à 12:09:35
Reply

Marsh Posté le 31-10-2008 à 11:23:34   

Reply

Marsh Posté le 31-10-2008 à 11:42:54    

tomcat xmx i feel lucky
 
Windows running Tomcat 5.5 and later : Go to the "Apache Tomcat x.x" folder in the Start Menu. Start the "Configure Tomcat".
Select the "Java" tab in the configuration dialog.
 
    * Server mode: this is determined by the jvm.dll specified in the "Java Virtual Machine" text box. (One should not specify the "-server" or "-client" JVM option.)
      The server .dll is usually placed under a "server" directory in the JRE directory.
      For example: "C:\Program Files\Java\jdk1.5.0_07\jre\bin\server\jvm.dll".
      The complete SDK should be downloaded for this from Sun, as the JRE installers only contain the "client" directory.
    * Maximum heap size:The "Maximum memory pool" text box coresponds to the heap size limit.
      (If using this text box it is not needed to specify "-Xmx" Java option.)
    * Advanced JRE options can be specified in the "Java Options" text area. Append your other Java options at the bottom of the option list.
 
 
bel effort

Reply

Marsh Posté le 31-10-2008 à 12:08:54    

Un grand merci  :jap:  
 
Bon, ok, je me sens stupide : j'ai trifouillé dans tout un tas de dossiers, de services, de pages web, de registres et pas dans le menu Démarrer.  :sweat:
Bref, j'ai réglé le fameux paramètre -Xmx et, après redémarrage du service, j'ai vérifié avec Tomcat Manager "Etat du serveur" que la nouvelle valeur est bien active.
 
En final, je saurais assez vite si le problème venait bien de là !

Reply

Marsh Posté le 31-10-2008 à 13:26:12    

C'est peut-être un peu chaud de te contenter de doubler le heap space sans trop savoir si un heap trop petit est la cause du problème.
 
Tu risques de simplement déplacer la limite où ton serveur va se sentir mal. Ca peut aussi passer, mais avec des perfs décevantes si le problème est ailleurs.
 
Tu serais bien inspiré de passer un coup de profiler et de te renseigner sur les autres switches de la JVM...


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 31-10-2008 à 14:05:43    

sircam a écrit :

C'est peut-être un peu chaud de te contenter de doubler le heap space sans trop savoir si un heap trop petit est la cause du problème.
 
Tu risques de simplement déplacer la limite où ton serveur va se sentir mal. Ca peut aussi passer, mais avec des perfs décevantes si le problème est ailleurs.
 
Tu serais bien inspiré de passer un coup de profiler et de te renseigner sur les autres switches de la JVM...


Cette gestion de taille de tas est foireuse avec Java. T'es obligé de spécifier un max pour le pire des cas, sauf que du coup, le bousin se gave jusqu'à occuper cette valeur. C'est complètement foireux, surtout quand tu as un serveur avec plusieurs applis/process, tu finis toujours par mettre tout le monde à 1200/1400 pour avoir la paix.
 
Donc je sais plus si avec tomcat t'as un truc de suivi de la conso mémoire (comme avec WAS) mais le mieux, c'est encore de suivre les tendances voir si tu vas dans le mur ce soir ou demain.

Reply

Marsh Posté le 31-10-2008 à 16:11:53    

sircam a écrit :

C'est peut-être un peu chaud de te contenter de doubler le heap space sans trop savoir si un heap trop petit est la cause du problème.

J'en suis bien conscient, mais comme cette appli tournait tranquille depuis plusieurs mois et que les problèmes surviennent avec l'augmentation du nombre de connexions, je me dis que ça vaut le coup d'essayer.
 
Si le problème n'est pas résolu, je chercherais d'autres causes possibles.

Reply

Marsh Posté le 31-10-2008 à 16:55:45    

Reply

Marsh Posté le 01-11-2008 à 15:05:04    

Taz a écrit :


Cette gestion de taille de tas est foireuse avec Java. T'es obligé de spécifier un max pour le pire des cas, sauf que du coup, le bousin se gave jusqu'à occuper cette valeur.


Pas forcément. Certaines stratégies de garbage collection sont plus agressives et évitent que la JVM se gavent puis que le GC soit obligé de passer un gros coup de balai, avec lag à la clé en général ("stop-the-world garbage collection" ).
 
lsdyoyo > Oui, souvent, on se contente d'agrandir le heap, mais indépendamment d'un OutOfMemory, il est bon de voir si on n'est pas à la limite, ou si on peut améliorer les performances, voir prévenir des soucis ultérieurement.
 
Au passage, sans gros effort, on gagne à régler -Xms en même temps que -Xmx, pour éviter de coûteuses allocations en cours de route (Xms égale à Xmx n'aurait rien de choquant pour un serveur...).
 


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed