Results concerning setting reuse to JK_FALSE:
I tested closing the connections in ajp_done after each request. It
shows the following behaviour:
- TCP packet dump shows a correct Fin-Ack... sequence, i.e. a regular
TCP connection shutdown.
- mod_jk logs opening of a new connection for each request
- Tomcat 5.5.17 logs
DEBUG (ChannelSocket.java:675) - server has been restarted or reset t
his connection
at the end of each connection. The line comes from:
org/apache/jk/common/ChannelSocket.java
...
663 /** Process a single ajp connection.
664 */
665 void processConnection(MsgContext ep) {
666 try {
667 MsgAjp recv=new MsgAjp();
668 while( running ) {
669 if(paused) { // Drop the connection on pause
670 break;
671 }
672 int status= this.receive( recv, ep );
673 if( status <= 0 ) {
674 if( status==-3)
675 log.debug( "server has been restarted or
reset this connection" );
676 else
677 log.warn("Closing ajp connection " +
status );
678 break;
679 }
680 ep.setLong( MsgContext.TIMER_RECEIVED,
System.currentTimeMillis());
681
...
This block hasn't changed in the last two years.
The "-3" comes from read() in the same Class:
621 // connection just closed by remote.
622 if (got <= 0) {
623 // This happens periodically, as apache restarts
624 // periodically.
625 // It should be more gracefull ! - another
feature for Ajp14
626 // log.warn( "server has closed the current
connection (-1)" );
627 return -3;
628 }
- API docs for getInputStream() in Socket say:
==================
Under abnormal conditions the underlying connection may be broken by the
remote host or the network software (for example a connection reset in
the case of TCP connections). When a broken connection is detected by
the network software the following applies to the returned input stream:
...
If there are no bytes buffered on the socket, or all buffered bytes have
been consumed by read, then all subsequent calls to read will throw an
IOException.
==================
So it looks like this situation should be the same on all platforms.
- Even under "ab -n 10000 -c 20" and several JVM Thread-Dumps, I can not
find any Threads in bad stacks.
So I think the Tomcat problem with recent code is a non-issue. If anyone
has different experience please correct me.
Regards,
Rainer
Rainer Jung schrieb:
> I checked the whole thread, but I found no technical description of the
> problem observed. So apart from discussing the uses and stability of any
> do-not-reuse implementation, I would be interested in understanding the
> real problem, which started the discussion.
>
> - What is known about the TCP behaviour of the firewall, i.e. what
> exactly has been observed with respect to TCP packets?
> - What are the platforms and versions of the used components on the
> Apache and the Tomcat side?
>
> W.r.t. the problem of shutting down a socket from the apache side and
> wasting tomcat threads, I never experienced a problem with that on *nix
> systems. I'll check again carefully, but I would be interested in any
> concrete information on which platforms and how such a problem can be
> reproduced.
>
> Regards,
>
> Rainer
>
> Jim Jagielski schrieb:
>> I and other have run into issues where the socket
>> between Apache and Tomcat (due to a in-between firewall)
>> isn't closed as it should be... I'm digging further into
>> this as far as why the timeout isn't being honored, but
>> it got me thinking that a "no reuse" option might be
>> nice. Basically, it prevents reuse from ever being set
>> to TRUE...
>>
>> PS: Also to be done with mod_proxy_ajp as well, but that's
>> a different list :)
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]