This is called thread hi-jacking :-)

However, without knowing anything about your jdo implementation I can't say if

org.jpox.PersistenceManagerFactoryImpl.getPersistenceManager(PersistenceManagerFactoryImpl.java:645)
          - waiting to lock <0x5b775de0> (a

and

TP-Processor17" daemon prio=1 tid=0x082df898 nid=0x3379 waiting for
 monitor entry [0xbc7fd000..0xbc7ff4d4]
          at 
org.jpox.store.expression.TableExprAsJoins.referenceColumn(TableExprAsJoins.java:65)

is normal behaviour or an indication for a deadlock. What I can say,
is that the 2.4.x kernel could be a problem if you have more then 800
threads.
Do you have NPTL or the standart linux threading? I don't know your
linux distro, but most 2.4.x kernels came out without NPTL support, is
updating to 2.6.x an option for you?

regards
leon

On 3/17/06, Roger Keays <[EMAIL PROTECTED]> wrote:
>
> Hi Leon,
>
> Recently I've noticed similar deadlocks on my tomcat server. In my case,
> the server just hangs with no warning even though there is plenty of
> memory available. I tried the following to locate the problem, but it
> has all been in vain:
>
>      * upgrade jdk from 1.5.0.1 to 1.5.0.6
>      * upgrade tomcat from 5.5.7 to 5.5.16
>      * probing with JMX
>      * rebooting
>      * running the server as root
>      * increasing the AJP thread maximums
>      * increasing the max postgresql connections
>      * removing the HTTP connector and only using AJP
>      * removing the AJP connector and only using HTTP
>
> When the deadlock occurs, I cannot even probe the JVM with JMX. It is
> fairly repeatable though - all I have to do is load about a dozen pages
> at once (presumably this is about 80 - 100 GET requests).
>
> I also noticed by running 'top' that a single java process sits on top
> of the list, while in normal operation there are a few java processes
> running at the top of the list. When I saw your post, I tried sending
> SIGKILL and got a bunch of stacktraces like those attached below. Unlike
> your case though, I get practically no warning in the catalina log of
> any potential problems.
>
> My environment is
>
>    * Linux version 2.4.27-2-686
>    * jdk 1.5.0.6
>    * tomcat 5.5.16
>    * jvm args -Xmx256m
>    * glibc 2.3.2
>
> Any suggestions on this one would be helpful.
>
> Thanks!
>
> Roger
>
>
>
> Begin stacktrace snippets:
>
> "TP-Processor14" daemon prio=1 tid=0x08402b38 nid=0x3376 waiting for
> monitor entry [0xbcdff000..0xbcdff754]
>          at
> org.jpox.PersistenceManagerFactoryImpl.getPersistenceManager(PersistenceManagerFactoryImpl.java:645)
>          - waiting to lock <0x5b775de0> (a
> org.jpox.PersistenceManagerFactoryImpl)
>          at net.ninthave.multisites.core.DAO.<init>(DAO.java:82)
>          at
> net.ninthave.multisites.filters.RequestFilter.doFilter(RequestFilter.java:137)
>
>
>
> "TP-Processor17" daemon prio=1 tid=0x082df898 nid=0x3379 waiting for
> monitor entry [0xbc7fd000..0xbc7ff4d4]
>          at
> org.jpox.store.expression.TableExprAsJoins.referenceColumn(TableExprAsJoins.java:65)
>          at
> org.jpox.store.query.QueryStatement$QueryExpression.toString(QueryStatement.java:1147)
>          at
> org.jpox.store.query.QueryStatement.selectQueryExpression(QueryStatement.java:357)
>          - locked <0x5db8db60> (a org.jpox.store.query.QueryStatement)
>          at
> org.jpox.store.query.QueryStatement.select(QueryStatement.java:261)
>          - locked <0x5db8db60> (a org.jpox.store.query.QueryStatement)
>          at
> org.jpox.store.query.QueryStatement.select(QueryStatement.java:274)
>          - locked <0x5db8db60> (a org.jpox.store.query.QueryStatement)
>          at
> org.jpox.store.query.QueryStatement.select(QueryStatement.java:287)
>          - locked <0x5db8db60> (a org.jpox.store.query.QueryStatement)
>          at org.jpox.store.mapping.Mappings.selectMapping(Mappings.java:50)
>          at
> org.jpox.store.rdbms.extent.ClassTableExtent.newResultObjectFactory(ClassTableExtent.java:254)
>          at org.jpox.store.query.JDOQLQuery.compile(JDOQLQuery.java:615)
>          at
> org.jpox.store.query.JDOQLQuery.performExecute(JDOQLQuery.java:654)
>          at org.jpox.store.query.Query.executeWithMap(Query.java:868)
>          at org.jpox.store.query.Query.executeWithArray(Query.java:848)
>          at org.jpox.store.query.Query.execute(Query.java:793)
>          at cashflowclub.Helper.getNextEvent(Helper.java:44)
>
>
> "TP-Processor18" daemon prio=1 tid=0x084e9a90 nid=0x337a runnable
> [0xbc5ff000..0xbc5ff554]
>          at java.net.SocketInputStream.socketRead0(Native Method)
>          at java.net.SocketInputStream.read(SocketInputStream.java:129)
>          at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
>          at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
>          at java.io.BufferedInputStream.read(BufferedInputStream.java:313)
>          - locked <0x5bca9a08> (a java.io.BufferedInputStream)
>          at org.apache.jk.common.ChannelSocket.read(ChannelSocket.java:607)
>          at
> org.apache.jk.common.ChannelSocket.receive(ChannelSocket.java:545)
>          at
> org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:672)
>          at
> org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:876)
>          at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>          at java.lang.Thread.run(Thread.java:595)
>
>
>
> Leon Rosenberg wrote:
> > Hi,
> >
> > I analyzed my thread dump and log files from yesterdays's crash a bit.
> > Here the flow of events:
> >
> > First probably the deadlock occured. The following entry in logfiles
> > is an indication for it:
> >
> > Mar 14, 2006 8:53:03 PM org.apache.tomcat.util.threads.ThreadPool logFull
> > SEVERE: All threads (750) are currently busy, waiting. Increase
> > maxThreads (750) or check the servlet status
> >
> > After that the series of "can't/shouldn't happen exceptions" fills the 
> > logfiles:
> >
> > ApplicationDispatcher[]: Servlet.service() for servlet jsp threw exception
> > javax.servlet.jsp.JspException: No bean found under attribute key result
> > StandardWrapperValve[controller]: Servlet.service() for servlet
> > controller threw exception
> > javax.servlet.jsp.JspException: No bean found under attribute key result
> > javax.servlet.jsp.JspException: No bean found under attribute key result
> > [EMAIL PROTECTED]: Exception
> > Processing ErrorPage[errorCode=500, location=/down/500.html]
> > ClientAbortException:  java.net.SocketException: Connection reset
> > ApplicationDispatcher[]: Servlet.service() for servlet jsp threw exception
> > javax.servlet.jsp.JspException: No bean found under attribute key result
> > [EMAIL PROTECTED]: Exception
> > Processing ErrorPage[errorCode=500, location=/down/500.html]
> > ClientAbortException:  java.net.SocketException: Connection reset
> > ApplicationDispatcher[]: Servlet.service() for servlet jsp threw exception
> > [EMAIL PROTECTED]: Exception
> > Processing ErrorPage[errorCode=500, location=/down/500.html]
> > ClientAbortException:  java.net.SocketException: Connection reset
> > [EMAIL PROTECTED]: Exception
> > Processing ErrorPage[errorCode=500, location=/down/500.html]
> > ClientAbortException:  java.net.SocketException: Connection reset
> > ApplicationDispatcher[]: Servlet.service() for servlet jsp threw exception
> > [EMAIL PROTECTED]: Exception
> > Processing ErrorPage[errorCode=500, location=/down/500.html]
> > ClientAbortException:  java.net.SocketException: Connection reset
> > [EMAIL PROTECTED]: Exception
> > Processing ErrorPage[errorCode=500, location=/down/500.html]
> > ClientAbortException:  java.net.SocketException: Broken pipe
> > [EMAIL PROTECTED]: Exception
> > Processing ErrorPage[errorCode=500, location=/down/500.html]
> > ClientAbortException:  java.net.SocketException: Connection reset
> > [EMAIL PROTECTED]: Exception
> > Processing ErrorPage[errorCode=500, location=/down/500.html]
> > ClientAbortException:  java.net.SocketException: Broken pipe
> > [EMAIL PROTECTED]: Exception
> > Processing ErrorPage[errorCode=500, location=/down/500.html]
> > ClientAbortException:  java.net.SocketException: Connection reset
> > ApplicationDispatcher[]: Servlet.service() for servlet jsp threw exception
> > javax.servlet.jsp.JspException: No bean found under attribute key userRights
> > StandardWrapperValve[controller]: Servlet.service() for servlet
> > controller threw exception
> > javax.servlet.jsp.JspException: No bean found under attribute key userRights
> > javax.servlet.jsp.JspException: No bean found under attribute key userRights
> > [EMAIL PROTECTED]: Exception
> > Processing ErrorPage[errorCode=500, location=/down/500.html]
> > ClientAbortException:  java.net.SocketException: Connection reset
> > ApplicationDispatcher[]: Servlet.service() for servlet jsp threw exception
> > java.lang.IllegalStateException: getAttribute: Session already invalidated
> > ApplicationDispatcher[]: Servlet.service() for servlet controller
> > threw exception
> > java.lang.IllegalStateException: getAttribute: Session already invalidated
> > StandardWrapperValve[index]: Servlet.service() for servlet index threw 
> > exception
> > java.lang.IllegalStateException: getAttribute: Session already invalidated
> > java.lang.IllegalStateException: getAttribute: Session already invalidated
> > [EMAIL PROTECTED]: Exception
> > Processing ErrorPage[errorCode=500, location=/down/500.html]
> > ClientAbortException:  java.net.SocketException: Connection reset
> >
> > Note: all three beans "result", "user" and "userRights" can't be
> > missing in the jsp, because the are added to the request in the
> > preprocessing phase or immediately before the forward to the jsp
> > happens. We also never see any of the above exception in catalina.out
> > for normally running server.
> >
> > Some time later:
> > ApplicationDispatcher[]: Servlet.service() for servlet jsp threw exception
> > java.lang.OutOfMemoryError: Java heap space
> > StandardWrapperValve[controller]: Servlet.service() for servlet
> > controller threw exception
> > java.lang.OutOfMemoryError: Java heap space
> > java.lang.OutOfMemoryError: Java heap space
> > [EMAIL PROTECTED]: Exception
> > Processing ErrorPage[errorCode=404, location=/down/404.html]
> > ClientAbortException:  java.net.SocketException: Connection reset
> >
> > the out of memory error is repeated 41 times.
> >
> > After all the cpu load gone down to zero and the server stoped
> > responding (no wonder without free threads or memory).
> >
> > The thread dump (can be submitted if someone is interested) contains
> > 678 threads waiting
> > on 9 JspServletWrapper Objects (
> >
> > The nine looks like:
> >
> > "http-8580-Processor16777" daemon prio=1 tid=0xc40b5890 nid=0x236f
> > waiting for monitor entry [0xc13fe000..0xc13ff840]
> >       at 
> > org.apache.naming.resources.ProxyDirContext.cacheLoad(ProxyDirContext.java:1552)
> >       - waiting to lock <0x61655498> (a 
> > org.apache.naming.resources.ResourceCache)
> >       at 
> > org.apache.naming.resources.ProxyDirContext.cacheLookup(ProxyDirContext.java:1398)
> >       at 
> > org.apache.naming.resources.ProxyDirContext.lookup(ProxyDirContext.java:279)
> >       at 
> > org.apache.naming.resources.DirContextURLConnection.getInputStream(DirContextURLConnection.java:301)
> >       at org.apache.jasper.compiler.Compiler.isOutDated(Compiler.java:569)
> >       at org.apache.jasper.compiler.Compiler.isOutDated(Compiler.java:492)
> >       at 
> > org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:509)
> >       at 
> > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:274)
> >       - locked <0x61df86c0> (a org.apache.jasper.servlet.JspServletWrapper)
> >       at 
> > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
> >       at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
> >       at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
> >
> >
> > the 678 looks like:
> > "http-8580-Processor17757" daemon prio=1 tid=0x0a448538 nid=0x2779
> > waiting for monitor entry [0xd30fe000..0xd30ff740]
> >       at 
> > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:270)
> >       - waiting to lock <0x61df86c0> (a 
> > org.apache.jasper.servlet.JspServletWrapper)
> >       at 
> > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
> >       at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
> >       at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
> >       at 
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
> >       at 
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
> >       at 
> > org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:703)
> >       at 
> > org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:589)
> >       at 
> > org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
> >       at 
> > org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)
> >       at 
> > org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:581)
> >
> > The 678 threads aren't waiting for a single lock all, they are
> > separated in groups, the largest group are 200 threads, the smallest
> > 23.
> >
> >
> > I can't find a locked <0x61655498> entry nowhere.
> > But I should be able to see it to recognize the thread causing the
> > deadlock, shouldn't I?
> >
> > Any ideas, anyone?
> >
> > regards
> > Leon
>
>
> --
> ----------------------------------------
> Ninth Avenue Software
> p: +61 7 3870 8494 (UTC +10)
> f: +61 7 3870 8491
> w: http://www.ninthavenue.com.au
> e: [EMAIL PROTECTED]
> ----------------------------------------
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to