tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Laurent Petit <>
Subject Re: Re : Re: Issue with keep-alive connections, when using APR Connector on Windows and starting Processes from Servlets
Date Fri, 29 Jun 2012 09:22:09 GMT
Hello Jeff, Konstantin & all,

On Mon, 2012-06-25 at 20:52 +0200, wrote:
> Hello Jeff & all,
> > Von: Jeff MAURY <>
> > Datum: Mon, 25 Jun 2012 18:46:02 +0200
> > Konstantin,
> > 
> > your explanations are very interesting but unclear to me: what do you
> > call the inactivity timer ? When it is started ? After the request has
> > been processed by the servlet ? In that case, I see no difference
> > between a servlet that launch a process and another one.
> > It seems to me that a process that is launched does not inhererits
> > handles from its parent process but it's possible that under Windows,
> > it's an option so it would be interesting to watch.
> > 
> > Jeff
> > 
> Sorry, I'm just a normal Tomcat user, and I don't know how exactly the APR connector
and its Timeout works, so I am unable to answer that.
> Howewer, I did some further observations:
> -When I perform a request to the servlet that opens wordpad.exe, the TCP connection from
Tomcat does not close after the timeout - even when I kill the Tomcat process (java.exe),
the TCP connection is still open. If I kill wordpad.exe, then finally the connection is closed/aborted.
> -When I have 1 TCP connection open to Tomcat and the servlet starts the little C program,
Task manager shows that it has 11 handles.
> However, when I have 5 TCP connections open to Tomcat, and do the request on one of them,
Task maanger shows that the C program has 15 handles - so four more handles when there are
four more connections to Tomcat. All of that 5 TCP connections don't close until I kill that
> That seems to me to be an indication that socket handles could be inherited by the child
processes that are startet by ProcessBuilder from tomcat.
> A msdn article mentions how to create a new process using CreateProcess(); it also mentions
that socket handles can be inherited:
> However, as I don't have much knowledge about programming with WinAPIs, I don't know
why those handles are inherited (the MSDN article mentions that a handle must be specified
as inheritable when created, to allow a child process to inherit it). Maybe someone with more
WinAPI/Tomcat Native knowledge can help here.

I also had the vague intuition that this related to handles inheritence.
Your recent tests & research tend to make this hypothesis even more

I know nothing about tomcat-native implementation, but I was able to see
that the bInheritHandle member is set to true here in tomcat native's C

lpetit:~/tmp/tomcat-native $ grep "bInheritHandle" -R *
native/os/win32/ntpipe.c:    con->sa.bInheritHandle = TRUE;

( )


What else could we do to help investigate / fix this issue ?



> Regards,
> Konstantin Preißer
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:
> For additional commands, e-mail:

Laurent Petit

Agence +33 (0)4 78 47 07 49




Yseop apporte une réponse intelligente et individualisée à chacun de vos

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message