My application server sometimes appears to hang and can't handle any new
request until I restart it.
Sometimes I even can't stop the server and the only choice is killing the
proccess.
It happens randomly. Maybe 4 or 5 days once, maybe once or twice per day.
I had tried to find out the reason with the log file. I found that almost
everytime before the problem appeared, I got this exception:
<code>
[#|2012-03-05T16:07:44.289+0800|INFO|44.0|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=45;_ThreadName=Thread-2;|/app/nova/glassfish3/glassfish/domains/domain1/docroot/download|#]
[#|2012-03-05T16:08:00.829+0800|WARNING|44.0|org.glassfish.grizzly.http.server.Request|_ThreadID=43;_ThreadName=Thread-2;|Exception
occurred during body skip
java.lang.IllegalStateException: Can not skip more bytes than available
at
org.glassfish.grizzly.http.server.io.InputBuffer.skip(InputBuffer.java:611)
at org.glassfish.grizzly.http.server.Request.skipPostBody(Request.java:1881)
at
org.glassfish.grizzly.http.server.Request.parseRequestParameters(Request.java:1850)
at
org.glassfish.grizzly.http.server.Request.getParameterNames(Request.java:948)
at org.apache.catalina.connector.Request.getParameterNames(Request.java:1379)
at org.apache.catalina.connector.Request.getParameterMap(Request.java:1354)
at
org.apache.catalina.connector.RequestFacade.getParameterMap(RequestFacade.java:482)
at
org.apache.struts2.dispatcher.Dispatcher.createContextMap(Dispatcher.java:528)
at
org.apache.struts2.dispatcher.ng.PrepareOperations.createActionContext(PrepareOperations.java:78)
at
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:78)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:284)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:173)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
at
org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:339)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:242)
at
com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:172)
at
org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:163)
at
org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:161)
at
org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at
org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:286)
at
org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:223)
at
org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:155)
at
org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:134)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:78)
at
org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:829)
at
org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:103)
at
org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:111)
at
org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
at
org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:131)
at
org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:508)
at
org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:488)
at java.lang.Thread.run(Thread.java:662)
</code>
What do you guys think about that? Is there any relationship between the
problem and the exception?
And i have googled this exception but found nothing, but just now i found
this from the glassfish server site.
[quote]
>GlassFish/Grizzly not able to accept new request if a remote client hangs
>(6963818) Description When closing an idle or expired connection, Grizzly
>waits a period of time, called the linger time, for any pending data
>transmission to complete. If the client on the connection is not network
>accessible, GlassFish Server might appear to hang.
>
>Workaround Add the following JVM option to the configuration:
>
>-Dcom.sun.enterprise.web.connector.grizzly.linger=-1
>
[/quote]
It may helps and i will have a try today.
Any suggestion is welcome. Thanks in advance!
By the way:
1) The application server is GlassFish Server Open Source Edition 4.0
(build 18)
2) Operating system is Red Hat Enterprise Linux Server release 5.3
(Santiago)
3) JRE is 6.0U27
--
[Message sent by forum member 'BlueMice']
View Post: http://forums.java.net/node/884051