Comment augmenter l'espace de Java pour une application tomcat
-
01-10-2019 - |
Question
Il y a beaucoup de questions qui demandent ceci ou une question similaire.
Ils donnent toute la commande qui doit être exécutée, ce que je ne comprends pas où dois-je écrire cette commande. Je veux augmenter de façon permanente l'espace de tas pour mes applications tomcat.
Je lis cette page http: //javahowto.blogspot .com / 2006/06/6-common-erreurs en création java-heap.html et il est dit dans la section Tomcat
Arrêter le serveur Tomcat, ensemble CATALINA_OPTS variable d'environnement, puis redémarrez Tomcat. Regardez le fichier tomcat-install / bin / catalina.sh ou catalina.bat pour la façon dont cette variable est utilisée. Par exemple,
set CATALINA_OPTS = -Xms512m -Xmx512m (Windows, pas "" autour de la valeur)
exportation CATALINA_OPTS = "-" Xms512m -Xmx512m (ksh / bash "" autour de la valeur)
setenv CATALINA_OPTS "-Xms512m -Xmx512m" (tcsh / csh "" autour de la valeur)
Je remplace la ligne
set CATALINA_OPTS =
avec
set CATALINA_OPTS = -Xms512m -Xmx512m
Mais je reçois toujours l'erreur.
javax.servlet.ServletException: exécution Servlet a généré une exception
cause racine
java.lang.OutOfMemoryError: espace tas Java java.lang.reflect.Array.multiNewArray (méthode native) java.lang.reflect.Array.newInstance (Array.java:90) nom.tam.util.ArrayFuncs.newInstance (ArrayFuncs.java:1028) nom.tam.fits.ImageData.read (ImageData.java:259) nom.tam.fits.Fits.readHDU (Fits.java:573) controller.UploadServlet.retreiveFITSFileFields (UploadServlet.java:206) controller.ScanServerFiles.doPost (ScanServerFiles.java:39) javax.servlet.http.HttpServlet.service (HttpServlet.java:637) javax.servlet.http.HttpServlet.service (HttpServlet.java:717)
La solution
Votre changement peut bien fonctionner. Votre demande ont besoin de beaucoup de mémoire -. Les émissions de traces de pile certains REPORTAGES liés
Je devine que l'erreur se soit tout de suite, avec un gros fichier, ou se plus tard, après plusieurs demandes.
Si l'erreur se produit tout de suite, vous pouvez augmenter la mémoire encore, ou d'enquêter savoir pourquoi tant de mémoire est nécessaire pour un fichier.
Si l'erreur se produit après plusieurs demandes, alors vous pourriez avoir une fuite de mémoire - où les objets ne sont pas récupérés par le garbage collector. L'utilisation d'un outil comme JProfiler peut vous aider à surveiller la quantité de mémoire utilisée par votre VM et peut vous aider à voir ce qui utilise cette mémoire et pourquoi les objets ne sont pas récupérés par le garbage collector.
Autres conseils
Il existe un mécanisme pour le faire sans modifier les fichiers qui sont dans la distribution. Vous pouvez créer un %CATALINA_HOME%\bin\setenv.bat
de fichier séparé ou $CATALINA_HOME/bin/setenv.sh
et mettre vos variables d'environnement. De plus, les paramètres de la mémoire s'appliquent à la machine virtuelle Java, Tomcat pas, donc je mis à la place la variable JAVA_OPTS
:
set JAVA_OPTS=-Xmx512m
Tout d'abord, vous ne pouvez pas modifier les paramètres de mémoire uniquement pour une application tomcat mais pour toutes les instances de tomcat.
Si vous utilisez tomcat de la console (en utilisant startup.bat), vous devez modifier catalina.bat et jouer avec CATALINA_OPTS. Par exemple:
set CATALINA_OPTS=-Xms512m -Xmx512m
appliquera tomcat Relancer les nouveaux paramètres.
Si vous obtenez toujours OutOfMemoryError vous devez savoir la quantité de mémoire que votre besoin d'application à ce moment (nom.tam.util.ArrayFuncs ...). Vous devez soit optimiser l'application ou simplement augmenter la mémoire fournie à tomcat.
- Ouvrez l'onglet du serveur dans Eclipse
- clic droit ouvert
- cliquez sur la configuration Lauch ouverte
- Aller aux arguments
-
Ici, vous pouvez ajouter dans les arguments VM après approuvé
-Xms64m -Xmx256m
Vous devez ajouter les lignes suivantes dans votre fichier catalina.sh
.
export CATALINA_OPTS="-Xms512M -Xmx1024M"
UPDATE : le contenu catalina.sh
dit clairement -
Ne pas définir les variables dans ce script. Au lieu de les mettre dans un setenv.sh de script dans CATALINA_BASE / bin pour garder vos personnalisations séparées.
Vous pouvez ajouter ci-dessus dans la place setenv.sh (créer un fichier si elle n'existe pas).
si vous utilisez Windows, il est très simple. Il suffit d'aller à des variables système Environnement (informatique clic droit> Propriétés> Paramètres système avancés> Variables Environnement); créer une nouvelle variable système avec name = CATALINA_OPTS et valeur = -Xms512m -Xmx1024m. Redémarrez Tomcat et amusez-vous!
Easiest façon de faire est: (Dans Linux / Ububuntu e.t.c)
Allez dans le répertoire bin tomcat:
cd /opt/tomcat8.5/bin
Créer un nouveau fichier sous le répertoire bin « de setenv.sh » et sauvegarder les entrées ci-dessous mention en elle.
export CATALINA_OPTS="$CATALINA_OPTS -Xms512m"
export CATALINA_OPTS="$CATALINA_OPTS -Xmx2048m"
export CATALINA_OPTS="$CATALINA_OPTS -XX:MaxPermSize=256m"
et commande problème:
./catalina.sh run
Dans votre fichier journal catalina vous pouvez voir l'entrée comme ceci:
INFO [main] VersionLoggerListener.log Command line argument: -Xms512m
INFO [main] VersionLoggerListener.log Command line argument: -Xmx2048m
INFO [main] VersionLoggerListener.log Command line argument: -XX:MaxPermSize=256m
Ce qui confirme que les changements ci-dessus ont eu lieu.
En outre, la valeur de « Xms512m » et « -Xmx2048m » peut être modifié en conséquence dans le fichier setenv.sh.
Démarrage de tomcat pourrait se faire en deux étapes aussi bien. cd /opt/tomcat8.5/bin
Step #1
run ./setenv.sh
Step #2
./startup.sh
Il suffit de régler cette ligne supplémentaire dans le fichier catalina.bat
LIGNE NON AUTOUR: 143
set "CATALINA_OPTS=-Xms512m -Xmx512m"
et redémarrez le service Tomcat
Pour Windows service, vous devez exécuter tomcat9w.exe (ou 6W / 7W / 8W) en fonction de votre version de tomcat. Tout d'abord, assurez-vous que tomcat est arrêté. Double-cliquez ensuite sur tomcat9w.exe. Accédez à l'onglet Java. Si vous savez que vous avez 64 bits de Windows avec 64 bits et 64 bits Java Tomcat, alors ne hésitez pas à mettre la mémoire supérieure à 512. Vous aurez besoin de faire un peu de gestionnaire de tâches de surveillance afin de déterminer à quelle hauteur pour le régler. Pour la plupart des applications développées en 2019 ... Je vous recommande un pool de mémoire initiale de 1024, et la piscine de mémoire maximale de 2048. Bien sûr, si votre ordinateur a des tonnes de RAM ... ne hésitez pas à aller aussi haut que vous le souhaitez. En outre, voir cette réponse: Comment augmenter la mémoire maximale Taille du pool? Apache Tomcat 9
vous pouvez le configurer dans catalina.sh comme CATALINA_OPTS = -Xms512m -Xmx512m
Ouvrez votre tomcat-dir / bin / catalina.sh et ajoutez ce qui suit la ligne partout -
CATALINA_OPTS="$CATALINA_OPTS -Xms1024m -Xmx3024m"
et redémarrez votre tomcat