Hello Jeff, Konstantin & all, On Mon, 2012-06-25 at 20:52 +0200, [email protected] wrote: > Hello Jeff & all, > > > Von: Jeff MAURY <[email protected]> > > 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 process. > > 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: > http://msdn.microsoft.com/en-us/library/windows/desktop/ms724466.aspx > > 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 appealing. 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 code: lpetit:~/tmp/tomcat-native $ grep "bInheritHandle" -R * native/os/win32/ntpipe.c: con->sa.bInheritHandle = TRUE; ( http://svn.apache.org/repos/asf/tomcat/native/branches/1.1.x/native/os/win32/ntpipe.c ) Jeff, What else could we do to help investigate / fix this issue ? Cheers, -- Laurent > > Regards, > Konstantin Preißer > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > -- Laurent Petit Agence +33 (0)4 78 47 07 49 Email [email protected] Yseop apporte une réponse intelligente et individualisée à chacun de vos clients www.yseop.com --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
