users@glassfish.java.net

Re: Glassfish Memory Issues

From: Scott Oaks <Scott.Oaks_at_Sun.COM>
Date: Thu, 12 Jul 2007 15:24:37 -0400

On Thu, 2007-07-12 at 15:03, ITVGuy2000 wrote:
> Is JDK 6 recommended these days?

Absolutely. I couldn't imagine doing JSP development without it; the
in-process compilation is *so* much faster.

>
> Please see other post here where I dumped swap space and heap config. Please
> tell me if you see anything out of whack.
>
> http://www.nabble.com/Re%3A-Glassfish-Memory-Issues-p11566129.html

You have only 1G of swap on your machine. So it's not surprising that
forking a process that has a max heap of 512M will eventually fail: once
the heap is 512M, you can't fork another one that size.

You can add more swap space quite easily in Solaris (see, e.g.,
http://docs.sun.com/app/docs/doc/817-5093/6mkisoq83?a=view). But then
you'll end up spending a lot of time paging to disk; I actually prefer
running completely out of phyiscal memory (which is what you're doing;
the 1GB of swap is your physical memory). So again, JDK 6 is your friend
here.

I also looked a little at the PermGen -- you'd expect it to be a
stairstep as you describe, and you're only approach the 64M initial
boundary. If you exceed that, it will resize to 128M, so I don't think
that's related to your issue.

-Scott

>
> Thanks,
>
> ITVGuy2000
>
>
> sdo wrote:
> >
> > While there may be an issue with the PermGen space (as Siva is helping
> > to debug), it may just be that when you start, you have enough memory to
> > fork the JVM. [Forking the JVM to compile a JSP requires, essentially,
> > that there be twice as much virtual memory on the machine as your
> > process normally consumes.] After the heap grows, you may not have that
> > extra space. How much swap space does your system have? And how big have
> > you configured your heap?
> >
> > Could you switch to JDK 6? That will compile the JSPs in process, so
> > there is no need to fork the JSP compiler, and no need for the extra
> > virtual memory. It will also be significantly faster to compile the
> > pages.
> >
> > -Scott
> >
> > On Thu, 2007-07-12 at 06:03, ITVGuy2000 wrote:
> >> My SJAS server is apparently running out of memory. The memory consumed
> >> by
> >> the server continues to increase with every deploy and compile until my
> >> server no longer responds to incoming requests. If I am lucky I get an
> >> exception in the log file indicating out of space (see at bottom of
> >> post).
> >>
> >> This problem occurs on both my development laptop and server (see
> >> configuration below).
> >>
> >> In searching the net and newsgroups I have found the following bug and
> >> post:
> >> I believe could be part of my issues are due to glassfish not freeing
> >> memory
> >> after JSP compiles.
> >> https://glassfish.dev.java.net/issues/show_bug.cgi?id=2375
> >>
> >> There is a very long thread about that discusses this unresolved bug.
> >> http://forums.java.net/jive/thread.jspa?messageID=202780
> >>
> >> I am kind of surprised that this bug is not getting more attention. I am
> >> surprised its not being reported more often in newsgroups. To me this is
> >> a
> >> show stopper (P1) bug. During heavy development/deployment I end up
> >> having
> >> to restart my glassfish server at least once a day.
> >>
> >> Is anyone else experiencing this?
> >> Why isn?t this bug a P1 level bug?
> >> What can I do to avoid my system hanging daily?
> >>
> >> As it stands I am kind if in a pinch. I have migrated all of my
> >> applications
> >> off of Tomcat onto the glassfish platform. I have gone from Rock Solid
> >> forget about it installation, to unstable needing to reboot every day.
> >> Please help!
> >>
> >> Thanks,
> >>
> >> ITVGuy2000
> >>
> >> -------------------------------- My Configuration
> >> ------------------------------------------------
> >>
> >> My Development configuration:
> >> Sony Laptop Vaio (1.7Ghz, 1.5G Ram, 88G drive (23G free))
> >> Windows XP Service Pack 2
> >> JDK 1.5.0_11
> >> SJAS Version 9 update 1 patch 1
> >> NB 5.5.1
> >> MySQL 5.0.15
> >>
> >> My Server configuration:
> >> Sun 220R (1G Ram, 18G Drive)
> >> Solaris 9 (SunOS 5.9)
> >> JDK 1.5.0_2
> >> MySQL 5.0.15
> >> SJAS Version 9 update 1 patch 1
> >>
> >> ------------------------------------ Error from server.log file
> >> -----------------------------------------
> >> [#|2007-07-09T09:35:36.191-0400|SEVERE|sun-appserver-pe9.0|javax.enterprise.system.container.web|_ThreadID=25;_ThreadName=httpWorkerThread-80-2;_RequestID=d2d27139-7fa5-4da4-902f-584dc55171e4;|StandardWrapperValve[jsp]:
> >> Servlet.service() for servlet jsp threw exception
> >> Error running /opt/SDK/jdk/bin/javac compiler
> >> at
> >> org.apache.tools.ant.taskdefs.compilers.DefaultCompilerAdapter.executeExternalCompile(DefaultCompilerAdapter.java:473)
> >> at
> >> org.apache.tools.ant.taskdefs.compilers.JavacExternal.execute(JavacExternal.java:47)
> >> at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:931)
> >> at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:757)
> >> at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:428)
> >> at org.apache.jasper.compiler.Compiler.compile(Compiler.java:528)
> >> at org.apache.jasper.compiler.Compiler.compile(Compiler.java:507)
> >> at org.apache.jasper.compiler.Compiler.compile(Compiler.java:495)
> >> at
> >> org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:530)
> >> at
> >> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
> >> at
> >> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:412)
> >> at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:318)
> >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> >> at
> >> org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:397)
> >> at
> >> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:278)
> >> at
> >> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
> >> at
> >> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:536)
> >> at
> >> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:240)
> >> at
> >> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:179)
> >> at
> >> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
> >> at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:73)
> >> at
> >> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:182)
> >> at
> >> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
> >> at
> >> com.sun.enterprise.web.VirtualServerPipeline.invoke(VirtualServerPipeline.java:120)
> >> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939)
> >> at
> >> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:137)
> >> at
> >> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
> >> at
> >> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:536)
> >> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939)
> >> at
> >> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:239)
> >> at
> >> com.sun.enterprise.web.connector.grizzly.ProcessorTask.invokeAdapter(ProcessorTask.java:667)
> >> at
> >> com.sun.enterprise.web.connector.grizzly.ProcessorTask.processNonBlocked(ProcessorTask.java:574)
> >> at
> >> com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:844)
> >> at
> >> com.sun.enterprise.web.connector.grizzly.ReadTask.executeProcessorTask(ReadTask.java:287)
> >> at
> >> com.sun.enterprise.web.connector.grizzly.ReadTask.doTask(ReadTask.java:212)
> >> at
> >> com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:252)
> >> at
> >> com.sun.enterprise.web.connector.grizzly.WorkerThread.run(WorkerThread.java:75)
> >> Caused by: java.io.IOException: Cannot run program
> >> "/opt/SDK/jdk/bin/javac"
> >> (in directory "/opt/SDK/domains/domain1"): error=12, Not enough space
> >> at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
> >> at java.lang.Runtime.exec(Runtime.java:593)
> >> at sun.reflect.GeneratedMethodAccessor161.invoke(Unknown Source)
> >> at
> >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> >> at java.lang.reflect.Method.invoke(Method.java:597)
> >> at
> >> org.apache.tools.ant.taskdefs.Execute$Java13CommandLauncher.exec(Execute.java:834)
> >> at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:435)
> >> at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:449)
> >> at
> >> org.apache.tools.ant.taskdefs.compilers.DefaultCompilerAdapter.executeExternalCompile(DefaultCompilerAdapter.java:470)
> >> ... 36 more
> >> Caused by: java.io.IOException: error=12, Not enough space
> >> at java.lang.UNIXProcess.forkAndExec(Native Method)
> >> at java.lang.UNIXProcess.<init>(UNIXProcess.java:53)
> >> at java.lang.ProcessImpl.start(ProcessImpl.java:65)
> >> at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)
> >> ... 44 more
> >> --- Nested Exception ---
> >> java.io.IOException: Cannot run program "/opt/SDK/jdk/bin/javac" (in
> >> directory "/opt/SDK/domains/domain1"): error=12, Not enough space
> >> at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
> >> at java.lang.Runtime.exec(Runtime.java:593)
> >> at sun.reflect.GeneratedMethodAccessor161.invoke(Unknown Source)
> >> at
> >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> >> at java.lang.reflect.Method.invoke(Method.java:597)
> >> at
> >> org.apache.tools.ant.taskdefs.Execute$Java13CommandLauncher.exec(Execute.java:834)
> >> at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:435)
> >> at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:449)
> >> at
> >> org.apache.tools.ant.taskdefs.compilers.DefaultCompilerAdapter.executeExternalCompile(DefaultCompilerAdapter.java:470)
> >> at
> >> org.apache.tools.ant.taskdefs.compilers.JavacExternal.execute(JavacExternal.java:47)
> >> at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:931)
> >> at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:757)
> >> at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:428)
> >> at org.apache.jasper.compiler.Compiler.compile(Compiler.java:528)
> >> at org.apache.jasper.compiler.Compiler.compile(Compiler.java:507)
> >> at org.apache.jasper.compiler.Compiler.compile(Compiler.java:495)
> >> at
> >> org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:530)
> >> at
> >> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
> >> at
> >> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:412)
> >> at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:318)
> >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> >> at
> >> org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:397)
> >> at
> >> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:278)
> >> at
> >> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
> >> at
> >> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:536)
> >> at
> >> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:240)
> >> at
> >> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:179)
> >> at
> >> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
> >> at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:73)
> >> at
> >> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:182)
> >> at
> >> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
> >> at
> >> com.sun.enterprise.web.VirtualServerPipeline.invoke(VirtualServerPipeline.java:120)
> >> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939)
> >> at
> >> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:137)
> >> at
> >> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
> >> at
> >> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:536)
> >> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939)
> >> at
> >> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:239)
> >> at
> >> com.sun.enterprise.web.connector.grizzly.ProcessorTask.invokeAdapter(ProcessorTask.java:667)
> >> at
> >> com.sun.enterprise.web.connector.grizzly.ProcessorTask.processNonBlocked(ProcessorTask.java:574)
> >> at
> >> com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:844)
> >> at
> >> com.sun.enterprise.web.connector.grizzly.ReadTask.executeProcessorTask(ReadTask.java:287)
> >> at
> >> com.sun.enterprise.web.connector.grizzly.ReadTask.doTask(ReadTask.java:212)
> >> at
> >> com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:252)
> >> at
> >> com.sun.enterprise.web.connector.grizzly.WorkerThread.run(WorkerThread.java:75)
> >> Caused by: java.io.IOException: error=12, Not enough space
> >> at java.lang.UNIXProcess.forkAndExec(Native Method)
> >> at java.lang.UNIXProcess.<init>(UNIXProcess.java:53)
> >> at java.lang.ProcessImpl.start(ProcessImpl.java:65)
> >> at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)
> >> ... 44 more
> >>
> >>
> >> --
> >> View this message in context:
> >> http://www.nabble.com/Glassfish-Memory-Issues-tf4067129.html#a11556901
> >> Sent from the java.net - glassfish users mailing list archive at
> >> Nabble.com.
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: users-unsubscribe_at_glassfish.dev.java.net
> >> For additional commands, e-mail: users-help_at_glassfish.dev.java.net
> >>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe_at_glassfish.dev.java.net
> > For additional commands, e-mail: users-help_at_glassfish.dev.java.net
> >
> >
> >
>
> --
> View this message in context: http://www.nabble.com/Glassfish-Memory-Issues-tf4067129.html#a11566718
> Sent from the java.net - glassfish users mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_glassfish.dev.java.net
> For additional commands, e-mail: users-help_at_glassfish.dev.java.net
>