Asankha C. Perera wrote:
Hi all
When using the Apache Synapse HTTP transport built over HttpCore+NIO
with JBoss 4.2.2 based Web service,
JBoss embeds Tomcat as its servlet container. So this is probably controlled by
the connection pool settings of Tomcat.
> I can see that typically JBoss
terminates a keep-alive connection after 20 seconds, but when under
load, it closes some connections (about 1 or 2 per 100) in around 4ms or
5ms etc..
Makes sense to reduce resource consumption under load, doesn't it?
When using HTTP 1.1, is the server expected to adhere to any
"Keep-Alive: xxx" headers sent by a client? i.e. Can I ask the server to
not close keep alive connections pre-maturely and can I expect adherence
from any server?
Of course not. The client can politely ask, but the server makes the final
decision. See RFC 2616, section 8.1.2.1.
If the remote party does close a keep-alive session due to an internal
decision, while the remote client is still reading the response, is this
still valid from the server point of view? i.e. as soon as the server is
done writing its response to the socket, can it close the TCP connection?
Well, TCP packets have a sequence number. And the FIN will certainly come after
all the data packets (provided the server is coded properly and does flush the
socket buffers before close, and it doesn't do a RST instead). No worries here.
Even when the sender has already closed the socket, the TCP stack will make sure
that the packets on the wire will be transferred correctly (resend etc).
Anyway the server closing his side of the connection doesn't even affect the
client side of the connection. It causes a half-open TCP connection (which can
actually be reopened in theory by sending another SYN). That's why the client
must always close its side of the connection as well or it causes a fd leak. The
server should generally announce its decision to close the connection with a
Connection: close header.
thanks
asankha
Cheers
Odi
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]