On 07/27/2006 11:31 AM, Jean-frederic Clere wrote: > Ruediger Pluem wrote: > >> On 07/26/2006 10:53 PM, Jean-frederic Clere wrote: >> >> >> >> >>> I already have a prototype of an external health checker process that >>> uses an AJP cping/cpong and a simple connect for http/https. >>> Basicaly mod_proxy uses the health_worker_method routine to write and >>> read from a slot mem that contains the information of the workers + a >>> health information. A balancer could check the health information before >>> using the worker. The health checker process uses the worker description >>> (thru the health_worker_method) to check if the back-end service is >>> running. >>> >> >> >> Sorry, you may have explained that before, but why using an external >> health >> checker process? >> >> > The idea is to have the health check independant from the requests so > that httpd knows in advance that a worker is not working.
Ah, now I get it. Ok, I guess we both have slightly different ideas about what to health check. Your idea is more of a server health check and is somewhat similar to what HW loadbalancers are doing: Check each backend on a regular schedule if it is still available. My idea is more of a connection health check. I want to check if the connection I leased from the pool is still healthy. If it is not that does not mean necessarily that the server in the backend failed. It could be just this connection. So the default response on a faulty connection would be to close this one and try with a new one. Only if this fails also then there seems to be something wrong with the backend server. This is more like what most DB connection pools offer with a health-check query. I think both ideas make sense. Of course the connection health checks should be simpler than the server health check to avoid too much overhead and too much lost time. That is the reason why I think that e.g. doing a HTTP request on a HTTP connection leased from the pool is unreasonable. We need some quick network layer check in this case, whereas in the AJP case CPING/CPONG has still an acceptable overhead. Finally I think if we have a good provider interface we can use the health check providers for both kind of health checks. We only need to create the frameworks for them to start in different parts of the code (separate process in your case, in my case I would guess that it needs to replace is_socket_connected which is called from ap_proxy_connect_backend) Regards RĂ¼diger