Re: conclusions to FAQs on mod_proxy_ajp vs. mod_jk?
On May 28, 2006, at 4:59 PM, Ruediger Pluem wrote: 3. Currently connections are not checked if they are healthy *before* a request is send (something like mod_jk's connect_timeout, prepost_timeout). I think this would be nice to have, but I guess it is not easy to do this in a protocol independent way. So this might be only subject to implementation in mod_proxy_ajp. I guess it depend on what we mean by healthy... We could ping the socket and make sure there's a response at the network stack layer, which would be protocol agnostic. Or, each proxy module would need to implement some protocol specific ping/pong test. 4. There is no match for mod_jk's recovery_options currently. Furthermore I think some research needs to be done about mod_proxy's current behaviour in this situation. I guess this is important to prevent things being twice in your basket :-). +1. Of course, there is a growing school of thought that questions whether the whole AJP stuff itself is worthwhile... just proxy HTTP and be done with it. :) Anyway, I've done some testing and mod_proxy_ajp works at least as well as mod_jk...
Re: conclusions to FAQs on mod_proxy_ajp vs. mod_jk?
On Wed, May 31, 2006 3:47 pm, Jim Jagielski wrote: Of course, there is a growing school of thought that questions whether the whole AJP stuff itself is worthwhile... just proxy HTTP and be done with it. :) This was a question raised way back when before the ajp work started, the question was whether mod_jk or mod_proxy_http was faster. It turned out mod_jk was faster, and so we have mod_proxy_ajp, but that was in the days before mod_proxy_http had a connection pool and load balancing. It would be interesting to benchmark http and ajp again to see what the difference is today with the connection pool enabled on both. Regards, Graham --
Re: conclusions to FAQs on mod_proxy_ajp vs. mod_jk?
Jim Jagielski wrote: I guess it depend on what we mean by healthy... We could ping the socket and make sure there's a response at the network stack layer, which would be protocol agnostic. Or, each proxy module would need to implement some protocol specific ping/pong test. Right, the cping/cpong is a missing feature. I didn't implement it initially because it existed only for ajp protocol, so a common mechanism should be used perhaps a socket liveness test on ftp/http and standard cping/cpong messages on ajp. Of course, there is a growing school of thought that questions whether the whole AJP stuff itself is worthwhile... just proxy HTTP and be done with it. :) If some day we implement the http-ng and web-mux then ajp will be obsolete. Until that it performs much faster when compared to http (with some limitations). We have some protocol enhancements on the schedule, like programmable message size, graceful shutdown, client break notification, and local headers, that will preserve backward compatibility with AJP/1.3. Anyway, I've done some testing and mod_proxy_ajp works at least as well as mod_jk... Same here :) The balancer misses few features from mod_jk that would be great to have, like hot standby and a new bybussines lb method. Regards, Mladen.
Re: conclusions to FAQs on mod_proxy_ajp vs. mod_jk?
On May 31, 2006, at 9:59 AM, Graham Leggett wrote: On Wed, May 31, 2006 3:47 pm, Jim Jagielski wrote: Of course, there is a growing school of thought that questions whether the whole AJP stuff itself is worthwhile... just proxy HTTP and be done with it. :) This was a question raised way back when before the ajp work started, the question was whether mod_jk or mod_proxy_http was faster. It turned out mod_jk was faster, and so we have mod_proxy_ajp, but that was in the days before mod_proxy_http had a connection pool and load balancing. It would be interesting to benchmark http and ajp again to see what the difference is today with the connection pool enabled on both. AJP had 2 things going for it, IIRC: 1. It was binary, so there was the transmission savings 2. Tomcat could handle AJP faster and more efficiently than HTTP (the AJP endpoints were quicker than the HTTP endpoint implementations) #2 has been the most changing, and is, at least IMO, not a real factor nowadays. #1 is still nice, plus, of course, not being holden to HTTP, there's stuff that can be added at the protocol level to make the WebServer-Tomcat interaction more efficient (so maybe that's reason #3 :) ).
Re: conclusions to FAQs on mod_proxy_ajp vs. mod_jk?
On May 31, 2006, at 10:07 AM, Mladen Turk wrote: Jim Jagielski wrote: I guess it depend on what we mean by healthy... We could ping the socket and make sure there's a response at the network stack layer, which would be protocol agnostic. Or, each proxy module would need to implement some protocol specific ping/pong test. Right, the cping/cpong is a missing feature. I didn't implement it initially because it existed only for ajp protocol, so a common mechanism should be used perhaps a socket liveness test on ftp/http and standard cping/cpong messages on ajp. As we (hopefully) add more protocols into the proxy framework, we will run into more and more cases where there are some things that simply can't be generic enough to avoid protocol specific items... I'm looking at some sort of provider interface for that. The balancer misses few features from mod_jk that would be great to have, like hot standby and a new bybussines lb method. These are expected to be added in soonish :)
Re: conclusions to FAQs on mod_proxy_ajp vs. mod_jk?
On 5/27/06, Ruediger Pluem [EMAIL PROTECTED] wrote: On 05/27/2006 03:58 PM, Jeff Trawick wrote: Are there still fundamental pieces missing from mod_proxy_ajp + mod_proxy_balancer which have to be resolved before mod_proxy_ajp is the natural solution for anybody on Apache = 2.2? Currently mod_proxy_balancer lacks the domain feature of mod_jk, but I do not know if this is regarded as fundamental piece. shrug Isn't pass-through of client SSL connection information another problem with mod_proxy? (servlets can't access cipher or client certificate) AFAIK not with mod_proxy_ajp. It seems to pass all these information to Tomcat. oops, I meant ... problem with using generic HTTP support with mod_proxy -- mod_proxy_http; I agree, the functional problem doesn't apply to mod_proxy_ajp
Re: conclusions to FAQs on mod_proxy_ajp vs. mod_jk?
On 05/28/2006 03:18 PM, Jeff Trawick wrote: On 5/27/06, Ruediger Pluem wrote: On 05/27/2006 03:58 PM, Jeff Trawick wrote: Are there still fundamental pieces missing from mod_proxy_ajp + mod_proxy_balancer which have to be resolved before mod_proxy_ajp is the natural solution for anybody on Apache = 2.2? Currently mod_proxy_balancer lacks the domain feature of mod_jk, but I do not know if this is regarded as fundamental piece. Other things I noticed that are different: 1. mod_jk's recycle_timeout and cache_timeout are not exactly matched by mod_proxy's smax and ttl. But from my current personal point of view this does not matter. 2. mod_proxy_ajp does miss mod_jk's secret options. Again not critical from my point of view. 3. Currently connections are not checked if they are healthy *before* a request is send (something like mod_jk's connect_timeout, prepost_timeout). I think this would be nice to have, but I guess it is not easy to do this in a protocol independent way. So this might be only subject to implementation in mod_proxy_ajp. 4. There is no match for mod_jk's recovery_options currently. Furthermore I think some research needs to be done about mod_proxy's current behaviour in this situation. I guess this is important to prevent things being twice in your basket :-). Isn't pass-through of client SSL connection information another problem with mod_proxy? (servlets can't access cipher or client certificate) AFAIK not with mod_proxy_ajp. It seems to pass all these information to Tomcat. oops, I meant ... problem with using generic HTTP support with mod_proxy -- mod_proxy_http; I agree, the functional problem doesn't I do not know if there is any standard in passing such information to the backend via HTTP, but I think you can pick up all SSL information that is available as env variables and add them as request headers to the backend request via mod_headers. Is this a sufficient solution for the problem? Regarding mod_proxy_http the following TODO's come up to my mind: 1. Currently we cannot handle keepalive connections to SSL backends. 2. There are some problems if the backend closes a keepalive connection by itself due to a timeout. See also: http://mail-archives.apache.org/mod_mbox/httpd-dev/200602.mbox/[EMAIL PROTECTED] http://mail-archives.apache.org/mod_mbox/httpd-dev/200602.mbox/[EMAIL PROTECTED] and PR3770 (http://issues.apache.org/bugzilla/show_bug.cgi?id=37770). Regards RĂ¼diger
Re: conclusions to FAQs on mod_proxy_ajp vs. mod_jk?
On 05/27/2006 03:58 PM, Jeff Trawick wrote: Are there still fundamental pieces missing from mod_proxy_ajp + mod_proxy_balancer which have to be resolved before mod_proxy_ajp is the natural solution for anybody on Apache = 2.2? Currently mod_proxy_balancer lacks the domain feature of mod_jk, but I do not know if this is regarded as fundamental piece. Isn't pass-through of client SSL connection information another problem with mod_proxy? (servlets can't access cipher or client certificate) AFAIK not with mod_proxy_ajp. It seems to pass all these information to Tomcat. Regards RĂ¼diger