As per Ruediger, I'm forwarding this issue to the APR development list.
This thread goes back some time on the httpd development list. The
problem is that Windows takes about 1 second to reject attempts to
connect to a dead port, leading to serious performance issues with
sparsely populated load balanced proxy port banks. The httpd folk
added a connection timeout that can be specified in milliseconds in
2.2.11, but using this had no effect on Windows.
Previously on the thread
Matt Stevenson had suggested doing
apr_socket_opt_set(newsock, APR_SO_NONBLOCK, 1);
before the APR connect call and
apr_socket_opt_set(newsock, APR_SO_NONBLOCK, 0);
afterwards, but this had other side-effects and testing (possibly all
on UNIX platforms) indicated that this was not necessary for proper
behavior of apr_socket_connect().
Unfortunately, what I'm seeing now on Windows is not proper
connection timeout behavior. I haven't added the changes suggested by
Matt Stevenson to see if they help yet, but I plan on doing so.
Other suggestions and investigation of this would be much appreciated.