C
Cross Eyed Admin
I'm looking at a thread dump from Java HotSpot(TM) Client VM
(1.4.0-b92 mixed mode) on Solaris 8. It is from a tomcat webapp with
an apache (mod_jk) front end.
I'm having trouble understanding the differences between these three
threads.
First, I don't understand why the jsp in this thread is listed twice
or why the ThreadPool$ControlRunnable object is locked.
"Thread-233 JSP: /portal/process.jsp JSP: /portal/process.jsp" prio=5
tid=0x5d5280 nid=0x132 waiting on monitor [d4001000..d40019e8]
at java.lang.Object.wait(Native Method)
- waiting on <e0f061e8> (a
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable)
at java.lang.Object.wait(Object.java:426)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:495)
- locked <e0f061e8> (a
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable)
at java.lang.Thread.run(Thread.java:536)
Secondly this thread below is waiting on a monitor. I understand that
to mean that it's waiting to get a monitor from some thread that
currently has it. Does this mean that the thread that has the monitor
(that this thread is waiting on) is in a syncronized method?
"Thread-214 JSP: /portal/process.jsp" prio=5 tid=0x3857c0 nid=0x117
waiting on monitor [d5801000..d58019e8]
at java.lang.Object.wait(Native Method)
- waiting on <e0592618> (a
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable)
at java.lang.Object.wait(Object.java:426)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:495)
- locked <e0592618> (a
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable)
at java.lang.Thread.run(Thread.java:536)
This is what I would think a "normal" thread handling this jsp would
look like:
"Thread-216 JSP: /portal/process.jsp" prio=5 tid=0x75e0e0 nid=0x119
runnable [d5601000..d56019e8]
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:116)
at org.apache.tomcat.modules.server.Ajp13.readN(Ajp13.java:759)
at org.apache.tomcat.modules.server.Ajp13.receive(Ajp13.java:793)
at org.apache.tomcat.modules.server.Ajp13.receiveNextRequest(Ajp13.java:284)
at org.apache.tomcat.modules.server.Ajp13Request.receiveNextRequest(Ajp13Interceptor.java:409)
at org.apache.tomcat.modules.server.Ajp13Interceptor.processConnection(Ajp13Interceptor.java:298)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:494)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:516)
at java.lang.Thread.run(Thread.java:536)
Any suggestions would be appreciated, especially any docs relating to
interpreting these stack traces (other than the info on java.sun.com).
thanks,
-ab
(1.4.0-b92 mixed mode) on Solaris 8. It is from a tomcat webapp with
an apache (mod_jk) front end.
I'm having trouble understanding the differences between these three
threads.
First, I don't understand why the jsp in this thread is listed twice
or why the ThreadPool$ControlRunnable object is locked.
"Thread-233 JSP: /portal/process.jsp JSP: /portal/process.jsp" prio=5
tid=0x5d5280 nid=0x132 waiting on monitor [d4001000..d40019e8]
at java.lang.Object.wait(Native Method)
- waiting on <e0f061e8> (a
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable)
at java.lang.Object.wait(Object.java:426)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:495)
- locked <e0f061e8> (a
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable)
at java.lang.Thread.run(Thread.java:536)
Secondly this thread below is waiting on a monitor. I understand that
to mean that it's waiting to get a monitor from some thread that
currently has it. Does this mean that the thread that has the monitor
(that this thread is waiting on) is in a syncronized method?
"Thread-214 JSP: /portal/process.jsp" prio=5 tid=0x3857c0 nid=0x117
waiting on monitor [d5801000..d58019e8]
at java.lang.Object.wait(Native Method)
- waiting on <e0592618> (a
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable)
at java.lang.Object.wait(Object.java:426)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:495)
- locked <e0592618> (a
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable)
at java.lang.Thread.run(Thread.java:536)
This is what I would think a "normal" thread handling this jsp would
look like:
"Thread-216 JSP: /portal/process.jsp" prio=5 tid=0x75e0e0 nid=0x119
runnable [d5601000..d56019e8]
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:116)
at org.apache.tomcat.modules.server.Ajp13.readN(Ajp13.java:759)
at org.apache.tomcat.modules.server.Ajp13.receive(Ajp13.java:793)
at org.apache.tomcat.modules.server.Ajp13.receiveNextRequest(Ajp13.java:284)
at org.apache.tomcat.modules.server.Ajp13Request.receiveNextRequest(Ajp13Interceptor.java:409)
at org.apache.tomcat.modules.server.Ajp13Interceptor.processConnection(Ajp13Interceptor.java:298)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:494)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:516)
at java.lang.Thread.run(Thread.java:536)
Any suggestions would be appreciated, especially any docs relating to
interpreting these stack traces (other than the info on java.sun.com).
thanks,
-ab