IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tomcat et TomEE Java Discussion :

[JAVA] [TOMCAT] java.lang.OutOfMemoryError lors du déploiement d'une application WAR


Sujet :

Tomcat et TomEE Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut [JAVA] [TOMCAT] java.lang.OutOfMemoryError lors du déploiement d'une application WAR
    Bonjour à tous,

    Sur un de mes serveurs d'applications Tomcat 5.0.28, je rencontre depyuis peux l'erreur suivante lors du déploiement du fichier WAR (dépot dans le dossier webapps) :

    ErrorAug 31, 2009 11:35:37 AM org.apache.catalina.core.ContainerBase$ContainerBackgro
    undProcessor processChildren
    SEVERE: Exception invoking periodic operation:
    java.lang.OutOfMemoryError
    at java.util.zip.ZipFile.open(Native Method)
    at java.util.zip.ZipFile.<init>(ZipFile.java:203)
    at java.util.jar.JarFile.<init>(JarFile.java:132)
    at java.util.jar.JarFile.<init>(JarFile.java:97)
    at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:545
    )
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:431
    )
    at org.apache.catalina.startup.HostConfig.checkContextLastModified(HostC
    onfig.java:849)
    at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1085)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java
    :327)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecycl
    eSupport.java:119)
    at org.apache.catalina.core.StandardHost.backgroundProcess(StandardHost.
    java:800)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.p
    rocessChildren(ContainerBase.java:1619)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.p
    rocessChildren(ContainerBase.java:1628)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.r


    Pourtant ce serveur d'application configuré avec un XmX à 2Go semble chargé, selon tomcat manager, à 1Go. Je pense qu'il a encore de la marge et ne comprend donc pas ce qui se passe.

    Merci d'avance de vos commentaires,

    Sébastien

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2004
    Messages : 327
    Points : 487
    Points
    487
    Par défaut
    Salut,

    Si c'est au deploiement de ton appli, regarde le paramètre MaxPermSize
    Par defaut ce paramètre est à 64 Mo ce qui est parfois insuffisant.
    Tu peux donc l'etendre en mettant -XX:MaxPermSize=256m

    PS : attention à l'utilisation de l'API java.util.zip
    Cette API n'est pas ecrite en Java mais en C et le GC Java "s'embrouille" avec.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    tesla, merci de ta réponse.

    Le MaxPermSize est déjà réglé à 512M...

    J'ai réussi à stabiliser la situation en réduisant le Xmx de la configuration (je l'ai passé à 1536m). Selon ce que j'ai lu sur le net, il s'agit d'une histoire de mémoire native : Plus on alloue de mémoire dans le Xmx, moins Tomcat à de mémoire Native disponible. C'est étonnent, car le serveur est survitaminé à 12Go. Il doit y avoir une taille de mémoire maximale que Tomcat doit pouvoir utiliser.

    Donc, en réduisant le Xmx, on laisse plus de place à la mémoire native, Tomcat peut donc créer plus de Threads, et accessoirement java.util.zip a de la place pour dézipper le war.

    C'est tordu, mais bon pourquoi pas?

    Si quelqu'un a des infos plus précises sur cette histoire de mémoire native, je suis preneur.

    Merci,

    Sébastien

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2004
    Messages : 327
    Points : 487
    Points
    487
    Par défaut
    12 Go de dispo ? C'est beaucoup.
    J'en deduis que tu es sous Unix.
    Il faut savoir que le comportement de la JVM varie en fonction de l'OS ET du processeur (32/64 bits).

    Je ne vois pas ce que tu veux dire par "memoire native". Pour la JVM il existe le tas (heap), la pile (stack) et le PermGen.

    L'histoire du nombre de threads et de la memoire peut paraitre tordue, mais c'est tout a fait vrai !! C'est un "bug" connu de l'API java.util.zip

Discussions similaires

  1. [2.x] Un problème lors du déploiement d'une application symfony 2
    Par elec1984 dans le forum Symfony
    Réponses: 7
    Dernier message: 29/05/2012, 13h59
  2. Champ de saisie lors du déploiement d'une application
    Par vaderetro33 dans le forum VB.NET
    Réponses: 1
    Dernier message: 30/04/2010, 11h05
  3. Réponses: 0
    Dernier message: 29/10/2009, 11h53
  4. Réponses: 1
    Dernier message: 30/05/2008, 18h34
  5. Réponses: 6
    Dernier message: 01/08/2007, 12h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo