tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Warren <tomcat.subscript...@gmail.com>
Subject Re: nio connector configuration
Date Thu, 19 Feb 2009 20:28:28 GMT
Sorry to bump this thread.  I'm willing to pay for some assistance if
anyone's interested in helping.  I'm trying to figure out 2 problems
when running my system under a light-moderate load test:

1) why do my comet timeout events not get generated on time (supposed
to be every 50 seconds, averaging 56s, with many refused connections
skewing the average down, max 85s)?

2) why is tomcat refusing connections under what seems to be a reasonable load?

I'm happy to do more legwork on my own -- just looking for some
pointers here.  Can anyone help me out?

Looking at JConsole, 2 items that look suspicious: 1) blocked
http-acceptor threads, and 2) block-poller and client-poller threads
that show a high number of blocks (see below).  Also, the non-comet
http requests are returning quickly, averaging ~150ms, so it seems to
be only my comet requests that are having issues.

Running a load test with 600 total client threads averaging 14
requests/sec.  300 threads making normal http requests, 300 threads
making comet requests that wait 50 seconds for a server timeout.

Tomcat 6.0.18 on Windows XP.

    <Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol"
	maxThreads="1000"
	acceptorThreadCount="5"
	acceptorThreadPriority="10"
	pollerThreadCount="5"
	pollerThreadPriority="10"
	redirectPort="8443"
	enableLookups="false" />

after 1/2 hour running:

normal http requests:
20000 samples, averaging 150 ms, ~.5% error

comet requests:
10000 samples, averaging 56s, ~3.5% error

Information from JConsole:

CPU avg: 5-10%
threads: stable @ ~300
memory: stable @ ~130MB

Thread status from JConsole of the http-acceptor, block-poller, and
client-poller threads:

Name: http-80-Acceptor-0
State: BLOCKED on java.lang.Object@17a82f1 owned by: http-80-Acceptor-4
Total blocked: 132  Total waited: 0

Stack trace:
sun.nio.ch.ServerSocketChannelImpl.accept(Unknown Source)
org.apache.tomcat.util.net.NioEndpoint$Acceptor.run(NioEndpoint.java:1198)
java.lang.Thread.run(Unknown Source)

-----

Name: http-80-Acceptor-1
State: BLOCKED on java.lang.Object@17a82f1 owned by: http-80-Acceptor-4
Total blocked: 129  Total waited: 0

Stack trace:
sun.nio.ch.ServerSocketChannelImpl.accept(Unknown Source)
org.apache.tomcat.util.net.NioEndpoint$Acceptor.run(NioEndpoint.java:1198)
java.lang.Thread.run(Unknown Source)

-----

Name: http-80-Acceptor-2
State: BLOCKED on java.lang.Object@17a82f1 owned by: http-80-Acceptor-4
Total blocked: 122  Total waited: 0

Stack trace:
sun.nio.ch.ServerSocketChannelImpl.accept(Unknown Source)
org.apache.tomcat.util.net.NioEndpoint$Acceptor.run(NioEndpoint.java:1198)
java.lang.Thread.run(Unknown Source)

-----

Name: http-80-Acceptor-3
State: BLOCKED on java.lang.Object@17a82f1 owned by: http-80-Acceptor-0
Total blocked: 166  Total waited: 0

Stack trace:
sun.nio.ch.ServerSocketChannelImpl.accept(Unknown Source)
org.apache.tomcat.util.net.NioEndpoint$Acceptor.run(NioEndpoint.java:1198)
java.lang.Thread.run(Unknown Source)

-----

Name: http-80-Acceptor-4
State: BLOCKED on java.lang.Object@17a82f1 owned by: http-80-Acceptor-0
Total blocked: 133  Total waited: 0

Stack trace:
sun.nio.ch.ServerSocketChannelImpl.accept(Unknown Source)
org.apache.tomcat.util.net.NioEndpoint$Acceptor.run(NioEndpoint.java:1198)
java.lang.Thread.run(Unknown Source)

-----

Name: http-80-ClientPoller
State: RUNNABLE
Total blocked: 17,950  Total waited: 5

Stack trace:
sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source)
sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source)
sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source)
sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source)
   - locked sun.nio.ch.Util$1@f7b8fc
   - locked java.util.Collections$UnmodifiableSet@195afdb
   - locked sun.nio.ch.WindowsSelectorImpl@c56236
sun.nio.ch.SelectorImpl.select(Unknown Source)
org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:1473)
java.lang.Thread.run(Unknown Source)

-----

Name: NioBlockingSelector.BlockPoller-1
State: RUNNABLE
Total blocked: 10,645  Total waited: 0

Stack trace:
sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source)
sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source)
sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source)
sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source)
   - locked sun.nio.ch.Util$1@b2ee9a
   - locked java.util.Collections$UnmodifiableSet@14eda77
   - locked sun.nio.ch.WindowsSelectorImpl@1e8bb4c
sun.nio.ch.SelectorImpl.select(Unknown Source)
org.apache.tomcat.util.net.NioBlockingSelector$BlockPoller.run(NioBlockingSelector.java:305)

Thanks for any help,
Peter

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message