DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://issues.apache.org/bugzilla/show_bug.cgi?id=29648>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=29648 Require a timeout that value that can passed to stop requests. Summary: Require a timeout that value that can passed to stop requests. Product: Apache httpd-1.3 Version: 1.3.26 Platform: Other OS/Version: Other Status: NEW Severity: Normal Priority: Other Component: core AssignedTo: [email protected] ReportedBy: [EMAIL PROTECTED] CC: [EMAIL PROTECTED] In working with a client experiencing performance issues, I came across the following issue. They use Apache to front end a large number of back end web appliactions such as CGI's, Websphere, Domino, Cold Fusion, Dynamo, Oracle, Webspeed, etc. When the back end servers would stop answering, or even worse would accept the tcp connection but never reply back, the main Apache web server would hold the connection for the full server timeout period which was set (for good reason) at 5 minutes. Their fierwall, however, would terminate a connection after 40 seconds if no data was transferred. Users would get firewall errors, hit reload and effectively open lock up a number of Apache processes for up to 5 minutes. The machine would hits its limit of apaches and the site would be inaccessible. The obvious answer is to fix the back end systems. Unfortunately one was a Domino bug and they had to wait for IBM. I proposed a new architecture with a front end machine capable of handling their transaction load. In the short term, however, something had to be done (the client is a government adgency, and they never seem to move things fast enough through the buraceracy). I therefore made some modifications in mod_proxy by identifying the sticking points, and created a new timeout value not based upon the server config that I could configure within the conf file so they could adjust it whatever firewall changes came down. This was an overwhelming success for the client and dropped their downtime on the main web server by over 95%. This seemed to me to be a good idea to pass back into Apache. Following is the source changes for 1.3.26 I had to make into the core, namely http_main.c. This is all new code. 1571,1575d1570 < static void proxy_timeout(int sig) < { < cancel_proxy((request_rec *) timeout_req); < timeout(sig); < } 1578,1581d1572 < < < < 1747,1756d1737 < } < < API_EXPORT(void) ap_config_timeout(int timeout_period, char *name, request_rec *r) < { < #ifdef NETWARE < get_tsd < #endif < timeout_req = r; < timeout_name = name; < ap_set_callback_and_alarm(proxy_timeout, timeout_period); The only issue I had with the patch is that it actually has proxy stuff within the main file. I believe the right way around this would be to pass a callback function to ap_config_timeout and store it in a global. I also do not like the function name ap_config_timeout. Should it be ap_variable_timeout? Any hints appreciated and I'll put the changes into my installation and test them. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
