We are experiencing intermittent "connect timeout" errors. The remote
service is really "ok", but it still results in the worker being
disabled.
Setting the proxypass disable period using "retry=1" is not good
enough for the application I'm working with (given the number of
requests we do per second).
I couldn't find an option to turn this off completely, so I started
looking at the proxy source code.
I found PROXY_WORKER_IGNORE_ERRORS in proxy_util.c. I'm not sure
where this should be set though. Instead I just added a "FALSE" to
the if statment as follows:
/*
* Put the entire worker to error state if
* the PROXY_WORKER_IGNORE_ERRORS flag is not set.
* Altrough some connections may be alive
* no further connections to the worker could be made
*/
if (FALSE && !connected && PROXY_WORKER_IS_USABLE(worker) &&
!(worker->s->status & PROXY_WORKER_IGNORE_ERRORS)) {
worker->s->status |= PROXY_WORKER_IN_ERROR;
worker->s->error_time = apr_time_now();
ap_log_error(APLOG_MARK, APLOG_ERR, 0, s,
"ap_proxy_connect_backend disabling worker for (%s)",
worker->hostname);
}
else {
worker->s->error_time = 0;
worker->s->retries = 0;
}
I have 2 questions:
1) What are the negative implications of disabling this?
2) Is there a cleaner way to accomplish this?
Thanks,
Brian Hayward