Ivan Zhakov wrote:
Hi!We have Apache/Subversion server under Windows Server 2003. And I wascome 
into problem with restarting server that process long request(more than 180 
seconds). It's usual for bug Subversion repository. Isee messages like this in 
error.log:[Thu Oct 13 02:28:01 2005] [notice] Child 3952: Terminating 1 
threadsthat failed to exit.
I research problem and that mpm_winnt have hardcoded timeout forstopping working 
threads:http://svn.apache.org/repos/asf/httpd/httpd/branches/2.0.x/server/mpm/winnt/child.c:child_main()/* 
Give busy worker threads a chance to service their connections */    ap_log_error(APLOG_MARK,APLOG_NOTICE, 
APR_SUCCESS, ap_server_conf,                 "Child %d: Waiting for %d worker threads to 
exit.",my_pid, threads_created);    end_time = time(NULL) + 180;    while (threads_created) {        
rv = wait_for_many_objects(threads_created, child_handles,end_time - time(NULL));        if (rv != 
WAIT_TIMEOUT) {            rv = rv - WAIT_OBJECT_0;            ap_assert((rv >= 0) && (rv < 
threads_created));            cleanup_thread(child_handles, &threads_created, rv);            continue; 
       }        break;    }
After this timeout Apache terminate worker threads. Why is it? Whympm_winnt 
behavior incompatible to perfork behavior which waitsinfinityle for stopping 
child processes? It causes really problems onmaintance and also doesn't permit 
use MaxRequestsPerChild option.
PS: Sorry if it is not right place for such questions.
--Ivan Zhakov




Hi Ivan,
This is definitly the right place for this type of question. I think the few Win32 developers here (myself included) always had this on their list of 'todo's'. The Windows MPM needs to be enhanced to reliably support multiple child processes and when that's done, this will be fixed 'for free'.

Bill

Reply via email to