turn off keep alive for your profiler to not give you false positives
maxKeepAliveRequests="1"
<Connector port="8080" protocol="HTTP/1.1" maxKeepAliveRequests="1"
connectionTimeout="20000"
redirectPort="8443" />
On 02/03/2010 02:14 PM, youngm wrote:
(This is a new thread spawned from my "Tomcat 6.0.24 Google Chrome" thread
with better information)
I'm running Tomcat 6.0.24, Sun JDKx86 6u18, Windows 7 64, Firefox and Chrome
browser.
I've noticed that for about the first 1-3 min after my tomcat instance has
started some of my requests that normally take> 1 sec to be handled are
taking 30+ sec to respond.
I've narrowed the problem down to my use of an Executor pool to handle
requests. The follwing is my server.xml:
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.core.JasperListener" />
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
/>
<Listener
className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Service name="Catalina">
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="150" minSpareThreads="4"/>
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps">
</Host>
</Engine>
</Service>
</Server>
If I change<Connector/> to not use and executor like so:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
I don't experience a problem.
I've hooked a profiler up and it appears all of the time is being spent
doing a socketRead with the following trace:
[Wall Time] java.net.SocketInputStream.socketRead0(FileDescriptor, byte[],
int, int, int)
java.net.SocketInputStream.read(byte[], int, int)
org.apache.coyote.http11.InternalInputBuffer.fill()
org.apache.coyote.http11.InternalInputBuffer.parseRequestLine()
org.apache.coyote.http11.Http11Processor.process(Socket)
I've tried to analyse the network info with wireshark and see no decernable
differences in network traffic between the 2 requests. I can try analyzing
wireshark data further if the list thinks that would be useful. Though I
find it strange that it works fine when not using an Executor.
Anyone have any ideas or seen similar behaviour?
Thanks,
Mike
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]