Tomcat version 7.0.6 listening on local machine 10.3.4.7 and accepting
incoming POST connections from 4 remote machines, 10.12.5.10[2-5].
Configured in standalone mode, using HTTP connector.
Remote machines are sending constant stream of POST messages...~100 kbit/sec.
All POST traffic is accepted and acknowledged, but, RESET packets
cause remotes machines to re-establish new connections, causing errors
on sender's side and slowing down rate of transfer.
Traffic headers show local machine is sending "Connection: close" on
post acknowledgement messages. Despite fact that remote machines'
POST messages contain "Connection: Keep-Alive" header.
======================
post traffic header ...
======================
POST /myapp HTTP/1.0
HOST: 10.3.4.7:8080
Connection: Keep-Alive
Authorization: Basic Y2VybmVyOnlpbiZ5YW5n
Content-type: multipart/form-data; boundary=----------1803119234
Content-Length: 59970
------------1803119234
Content-Disposition: form-data; name="xml"
<?xml version="1.0" encoding="ISO-
---------------------------------------------------------------------------------------------------------------------------------------
======================
response header ...
======================
------------1803119234--
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Date: Fri, 23 Sep 2011 18:27:25 GMT
Connection: close
======================
># netstat -anp | grep 8080
tcp 0 0 :::8081 :::*
LISTEN 23107/java
tcp 0 0 ::ffff:10.3.4.7:8080 ::ffff:10.12.5.103:39809
FIN_WAIT2 -
tcp 0 0 ::ffff:10.3.4.7:8080 ::ffff:10.12.5.104:33033
FIN_WAIT2 -
tcp 0 0 ::ffff:10.3.4.7:8080 ::ffff:10.12.5.102:57077
FIN_WAIT2 -
tcp 0 0 ::ffff:10.3.4.7:8080 ::ffff:10.12.5.105:39624
FIN_WAIT2 -
I've tried various connector configurations and protocols; HTTP, NIO,
connectionTimeout, etc.
Here's what my connector config looks like currently:
<Connector port=8080 protocol="org.apache.coyote.http11.Http11Protocol"
connectionTimeout="30000"
connectionLinger="100"
keepAliveTimeout="3000"
maxKeepAliveRequests="2000"
disableUploadTimeout="true"
maxThreads="500"
minSpareThreads="150"
maxSpareThreads="300"
acceptCount="200"
socket.soKeepAlive="yes"
enableLookups="false" />
===========================================
Why fin_wait2 state? I would expect to see ESTABLISHED connections
and and Keep-Alive in response header.
Why are RESET packets being sent back to remote machines?
Thanks for any feedback you can provide.
-wr
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]