memory leak au déploiement dans tomcat

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

memory leak au déploiement dans tomcat

E. Bellouni
Bonjour,

Je tente d'installer la version 2.3 de MDWeb sur un tomcat (6.0.35) installé en local avec la configuration par défaut, ainsi que la variable JAVA_OPT = "-Xmx1024M -XX:MaxPermSize=512M -Dfile.encoding=UTF-8".

Au déploiement du war de mdweb une erreur survient indiquant une fuite mémoire :

ATTENTION: MDweb caught a NamingException while attempting to get the name of th
e application from the JEE container. This can happen on JEE 5 platforms that do
 not handle JNDI lookups.
16 janv. 2012 13:56:03 org.mdweb.app.listener.DefaultServletContextListener setE
PSGDatabase
INFO: No MDWeb EPSG datasource available
INFO      [ConfigureListener] Initializing Mojarra (1.2_15-20100816-SNAPSHOT) fo
r context '/mdweb23'
GRAVE     [StandardContext] Error listenerStart
GRAVE     [StandardContext] Erreur de d├®marrage du contexte [/mdweb23] suite au
x erreurs pr├®c├®dentes
GRAVE     [WebappClassLoader] The web application [/mdweb23] created a ThreadLoc
al with key of type [com.sun.xml.bind.v2.ClassFactory$1] (value [com.sun.xml.bin
d.v2.ClassFactory$1@10ace8d]) and a value of type [java.util.WeakHashMap] (value
 [{class javax.xml.bind.annotation.W3CDomHandler=java.lang.ref.WeakReference@7e9
bed}]) but failed to remove it when the web application was stopped. This is ver
y likely to create a memory leak.

Suite à cette tentative de déploiement, le test "memory leak" de Tomcat répond :

The following web applications were stopped (reloaded, undeployed), but their
classes from previous runs are still loaded in memory, thus causing a memory
leak (use a profiler to confirm):
/mdweb23

Le redémarrage de tomcat n'y fait rien.

Avez vous une idée d'où peut provenir ce problème ?

Merci par avance.


Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: memory leak au déploiement dans tomcat

Mediii
Bonjour,

Pour mieux vous répondre nous avons besoin des fichiers de logs complets, en particulier le localhost.log se trouvant dans tomcat/logs


Bien cordialement,

Mehdi,

Geomatys
.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: memory leak au déploiement dans tomcat

E. Bellouni
Merci de m'avoir répondu.

Voici donc la log en question :

GRAVE: Exception lors de l'envoi de l'évènement contexte initialisé (context initialized) à l'instance de classe d'écoute (listener) org.mdweb.app.listener.DefaultServletContextListener
java.lang.NoClassDefFoundError: javax/media/jai/RegistryElementDescriptor
        at org.geotoolkit.internal.image.Setup.initialize(Setup.java:55)
        at org.geotoolkit.lang.Setup.initialize(Setup.java:207)
        at org.mdweb.app.listener.DefaultServletContextListener.contextInitialized(DefaultServletContextListener.java:55)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:563)
        at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1399)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297)
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(Unknown Source)
        at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(Unknown Source)
        at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1500)
        at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:252)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:186)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:563)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:877)
        at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:594)
        at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1675)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: javax.media.jai.RegistryElementDescriptor
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
        ... 38 more
16 janv. 2012 13:56:05 org.apache.catalina.core.StandardContext listenerStop
GRAVE: Exception lors de l'envoi de l'évènement contexte détruit (context destroyed) à l'instance de classe d'écoute org.mdweb.app.listener.DefaultServletContextListener
java.lang.NoClassDefFoundError: javax/media/jai/JAI
        at org.geotoolkit.internal.image.Setup.shutdown(Setup.java:66)
        at org.geotoolkit.lang.Setup.shutdown(Setup.java:222)
        at org.mdweb.app.listener.DefaultServletContextListener.contextDestroyed(DefaultServletContextListener.java:74)
        at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4245)
        at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4886)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4750)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:563)
        at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1399)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297)
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(Unknown Source)
        at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(Unknown Source)
        at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1500)
        at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:252)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:186)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:563)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:877)
        at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:594)
        at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1675)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: javax.media.jai.JAI
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
        ... 39 more

Il semblerait que JAI ne soit pas accessible, pourtant, dans mon C:\Program Files\Java\jdk1.6.0_27\jre\lib\ext, j'ai les 3 jars suivants :
- jai_codec.jar
- jai_core.jar
- jai_imageio.jar

Voyez vous ce qui manque ?
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: memory leak au déploiement dans tomcat

Guilhem Legal
Bonjour,

L'installation de JAI et JAI-imageio semble incomplète, il manque les 2 jar suivant :
  - clibwrapper_jiio.jar
  - mlibwrapper_jai.jar

Verifier aussi que c'est la bonne jvm qui est utilisé par tomcat (il y a des log au lancement du startup.sh /.bat)

Guilhem Legal
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: memory leak au déploiement dans tomcat

E. Bellouni
Ok, problème résolu. J'ai concentré mes tests sur cette histoire de jars...

Bon, les 2 jars (clibwrapper_jiio et mlibwrapper_jai) étaient bien installés, j'avais juste oublié de les citer.

Par contre, il a fallu que je recopie les 5 jars JAI du répertoire "C:\Program Files\Java\jdk1.6.0_27\jre\lib\ext" vers "C:\Program Files\Java\jdk1.6.0_27\lib\ext".

Et ça a débloqué le problème. Il y a là-dedans une subtilité qui m'échappe...
Mais l'essentiel est que ça fonctionne.

Merci pour vos aiguillages !
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: memory leak au déploiement dans tomcat

Thibault
In reply to this post by Guilhem Legal
Bonjour,

Après avoir rajouter :
  - clibwrapper_jiio.jar
  - mlibwrapper_jai.jar

Dans le lib de tomcat, l'application fonctionne correctement.

Merci.
Loading...