Re: [users@httpd] Peak download performance with single file
On Sat, Apr 23, 2011 at 07:46:37PM +0530, vrukesh panse wrote: > But, when we simultaneosly download more than one file (for example, two > different 10MB text files), we get total download speed of 12Mbps. This is the kind of thing you might see if the *client* TCP receive window is being filled. It may not be the server's fault. I'd also look into support of 'TCP window scaling' and 'selective acks'. Neither which I believe XP does by default. - The official User-To-User support forum of the Apache HTTP Server Project. See http://httpd.apache.org/userslist.html> for more info. To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org " from the digest: users-digest-unsubscr...@httpd.apache.org For additional commands, e-mail: users-h...@httpd.apache.org
Re: [users@httpd] mod_proxy_balancer - no way to name pool members by IP.
On Wed, Apr 20, 2011 at 02:17:43PM -0400, Eric Covener wrote: > > and I don't *think* anything looks at the Host header in the cached object, > > you could add a Vary on the Host header. I'd rather not play with the Host header after all if I can help it. If it Vary's on Host, won't it check that the Host matches the cached object's Host? Which it never will coz we broke it to get the backend proxy Host header working. DFW - The official User-To-User support forum of the Apache HTTP Server Project. See http://httpd.apache.org/userslist.html> for more info. To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org " from the digest: users-digest-unsubscr...@httpd.apache.org For additional commands, e-mail: users-h...@httpd.apache.org
Re: [users@httpd] mod_proxy_balancer - no way to name pool members by IP.
On Fri, Feb 04, 2011 at 11:06:48PM +, dfw-apa...@white.u-net.com wrote: > On Fri, Feb 04, 2011 at 05:36:01PM +, Igor Gali?? wrote: > > > > > > > But ProxySet only allows you to set the same Variables as > > > > > ProxyPass does. host is none of them. > > > > > > > > Indeed. This appears to be the problem. Such an option is missing. > > > > > > Right now I'm looking into 2.2's source to see how to add an option > > > preservehost=(on|off). > > > > > > Can you please test: > > > http://people.apache.org/~igalic/patches/mod_proxy-preserve_host.diff > > > > > > duh.. nodocumentationpatch! > > > But I'm pretty sure you can guess how to use it ;) > > > > http://people.apache.org/~igalic/patches/mod_proxy-preserve_host.2.diff > > Adds: Documentation, CHANGES update, MMN bump > > Also has a _set variable analogous to the other options. > > > > Bonus: compiles. > > Untested so far. > > Thanks. I've poked and snuffled, but a co-worker has pointed out that > there may be problems if this worker is a member of two different balance > pools. The connection properties would be controlled by the worker, but > what is sent down that connection should be controlled by the balancer pool. > > I followed your earlier lead when you mentioned ProxyPreserveHost is now > localisable in trunk. I dug out svn commit r824072 which looks to be exactly > what I need. It should prevent shared workers getting mixed up by allowing > me to set the Host at the level. > > I have a sneaking suspicion trying to set http://10.*> for a worker > would never work anyway, as the system won't see that as the destination. > It will see the balancer instead, so only the config > would apply anyway. > > We'll see how far I get. As it turns out, after a very long journey, I didn't get very far at all. After backporting the localisable ProxyPreserveHost patch I successfully overwrote the Host header from inside a Proxy block, allowing me to control which vhost I talked to on the backend member. Unfortunately this kludged Host header makes its way into your cached object headers and your access log... Now, you can fix the log by catching the Host in a Setenvif and logging that, and I don't *think* anything looks at the Host header in the cached object, but it turns out there is a more unpleasant problem : This works as expected : RewriteRule /foo(.*) balancer://back.foo.com/fooback/$1 [P] And this also proxypasses, but *none* of the directives in the take effect: RewriteRule /foo(.*) balancer://back.foo.com/fooback/$1 [P] No, I don't know why. Without the Proxy block directives to control the Host header sent to the backend, the backend gives us the finger, as its balancer member IP/hostname is not the vhost we want. I also needed to backport a few mod_proxy_http.c thread safety patches from 2.3 to 2.2.17 or else apachebenching was just a massacre. I think I'm going to have to retreat. It looks like I will need a patch to *specify* a host header at the balancer config level. Does anyone have any tips on how this might be done? DFW PS: "Ignoring parameter 'lbset=0' for worker 'http://10.1.2.3' because of worker sharing" (I backported a log verbosity patch too) Ignoring the other variables I can understand, but shouldn't lbset be unique to each balancer? e.g. I share the same backend workers amongst several balancers, but each backend IP may serve each vhost to a differing degree. - The official User-To-User support forum of the Apache HTTP Server Project. See http://httpd.apache.org/userslist.html> for more info. To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org " from the digest: users-digest-unsubscr...@httpd.apache.org For additional commands, e-mail: users-h...@httpd.apache.org
Re: [users@httpd] mod_proxy_balancer - no way to name pool members by IP.
On Fri, Feb 04, 2011 at 11:06:48PM +, dfw-apa...@white.u-net.com wrote: > On Fri, Feb 04, 2011 at 05:36:01PM +, Igor Gali?? wrote: > > > > > > > But ProxySet only allows you to set the same Variables as > > > > > ProxyPass does. host is none of them. > > > > > > > > Indeed. This appears to be the problem. Such an option is missing. > > > > > > Right now I'm looking into 2.2's source to see how to add an option > > > preservehost=(on|off). > > > > > > Can you please test: > > > http://people.apache.org/~igalic/patches/mod_proxy-preserve_host.diff > > > > > > duh.. nodocumentationpatch! > > > But I'm pretty sure you can guess how to use it ;) > > > > http://people.apache.org/~igalic/patches/mod_proxy-preserve_host.2.diff > > Adds: Documentation, CHANGES update, MMN bump > > Also has a _set variable analogous to the other options. > > > > Bonus: compiles. > > Untested so far. > > Thanks. I've poked and snuffled, but a co-worker has pointed out that > there may be problems if this worker is a member of two different balance > pools. The connection properties would be controlled by the worker, but > what is sent down that connection should be controlled by the balancer pool. > > I followed your earlier lead when you mentioned ProxyPreserveHost is now > localisable in trunk. I dug out svn commit r824072 which looks to be exactly > what I need. It should prevent shared workers getting mixed up by allowing > me to set the Host at the level. > > I have a sneaking suspicion trying to set http://10.*> for a worker > would never work anyway, as the system won't see that as the destination. > It will see the balancer instead, so only the config > would apply anyway. > > We'll see how far I get. As it turns out, after a very long journey, I didn't get very far at all. I needed to backport a few mod_proxy thread safety patches from 2.3 to 2.2.17 or else apachebench was just a massacre. After backporting the localisable ProxyPreserveHost patch I successfully overwrote the Host header from inside a Proxy block, allowing me to control which vhost I talked to on the backend member. Unfortunately this kludged Host header makes its way into your cached object headers and your access log... Now, you can fix the log by catching the Host in a Setenvif and logging that, and I don't *think* anything looks at the Host header in the cached object, but it turns out there is a more unpleasant problem : This works as expected : RewriteRule /foo(.*) balancer://back.foo.com/fooback/$1 [P] And this also proxypasses, but *none* of the directives in the take effect: RewriteRule /foo(.*) balancer://back.foo.com/fooback/$1 [P] No, I don't know why. Without the Proxy block directives to control the Host header sent to the backend, the backend gives us the finger, as its balancer member IP/hostname is not the vhost we want. I think I'm going to have to retreat. It looks like I will need a patch to *specify* a host header at the balancer config level. Does anyone have any tips on how this might be done? DFW PS: "Ignoring parameter 'lbset=0' for worker 'http://10.1.2.3' because of worker sharing" (I backported a log verbosity patch too) Ignoring the other variables I can understand, but shouldn't lbset be unique to each balancer? e.g. I share the same backend workers amongst several balancers, but each backend IP may serve each vhost to a differing degree. - The official User-To-User support forum of the Apache HTTP Server Project. See http://httpd.apache.org/userslist.html> for more info. To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org " from the digest: users-digest-unsubscr...@httpd.apache.org For additional commands, e-mail: users-h...@httpd.apache.org
Re: [users@httpd] mod_proxy_balancer - no way to name pool members by IP.
On Fri, Feb 04, 2011 at 05:36:01PM +, Igor Gali?? wrote: > > > > > But ProxySet only allows you to set the same Variables as > > > > ProxyPass does. host is none of them. > > > > > > Indeed. This appears to be the problem. Such an option is missing. > > > > Right now I'm looking into 2.2's source to see how to add an option > > preservehost=(on|off). > > > > Can you please test: > > http://people.apache.org/~igalic/patches/mod_proxy-preserve_host.diff > > > > duh.. nodocumentationpatch! > > But I'm pretty sure you can guess how to use it ;) > > http://people.apache.org/~igalic/patches/mod_proxy-preserve_host.2.diff > Adds: Documentation, CHANGES update, MMN bump > Also has a _set variable analogous to the other options. > > Bonus: compiles. > Untested so far. Thanks. I've poked and snuffled, but a co-worker has pointed out that there may be problems if this worker is a member of two different balance pools. The connection properties would be controlled by the worker, but what is sent down that connection should be controlled by the balancer pool. I followed your earlier lead when you mentioned ProxyPreserveHost is now localisable in trunk. I dug out svn commit r824072 which looks to be exactly what I need. It should prevent shared workers getting mixed up by allowing me to set the Host at the level. I have a sneaking suspicion trying to set http://10.*> for a worker would never work anyway, as the system won't see that as the destination. It will see the balancer instead, so only the config would apply anyway. We'll see how far I get. DFW - The official User-To-User support forum of the Apache HTTP Server Project. See http://httpd.apache.org/userslist.html> for more info. To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org " from the digest: users-digest-unsubscr...@httpd.apache.org For additional commands, e-mail: users-h...@httpd.apache.org
Re: [users@httpd] mod_proxy_balancer - no way to name pool members by IP.
On Thu, Feb 03, 2011 at 11:00:25PM +, Igor Gali?? wrote: > - dfw-apa...@white.u-net.com wrote: > > I've hit a vexing impasse with mod_proxy_balancer. > > > > I have a pool of backend boxes. They vhost many domains, so > > need the specific Host: header in requests to them (the *same* > > Host: header for all of them) > > > > I proxy requests to them potentially thousands of times a second, > > and their IP's are not going to be changing, so I name the > > BalancerMembers by IP address, as the DNS lookup overhead is > > a fatal waste of CPU, especially if your DNS servers melt > > and your site dies unnecessarily. (No, /etc/hosts is not possible. > > http://httpd.apache.org/docs/current/mod/mod_proxy.html#startup That only mentions ProxyBlock. We do not use ProxyBlock. Also, when we lost DNS, we lost the site, so reality has the last word regardless. > > The sitename has multiple A records, and I make the backends choose > > individualiseable vhosts. Besides, my hosts file is vast!) > > > > Unfortunately, when I try and use mod_headers to set the Host: header > > for these backend connections, the balancer layer destroys the > > result and replaces it with the IP. > > > > Apparently, if I switch ProxyPreserveHost on, I may get further, > > but since that's a site-wide setting a side effect would mean all > > Not quite sure what you mean by site-wide, but: > http://httpd.apache.org/docs/current/mod/mod_proxy.html#proxypreservehost > says: Context:server config, virtual host It does. Our site is a vhost. It has squillions of proxypasses to squillions of different backend boxes run by squillions of different people. I want to add another backend without breaking all of the other ones. > > of my other proxied directories would now get the wrong Host: header. > > All the RewriteRule [P]'s would break and I would have to catch and > > Wit a sec. > You're using mod_rewrite for proxying? > Why? (http://bash.org/?866112) Because I'm rewriting the URL, and then proxying it? Because I'm using rewritemaps? Because I like the letter P? Pick one :) Also, this problem is only using ProxyPass, so mod_rewrite is not the problem here. > > replace the Host in every single one of them in individual > > blocks. > > That deluge of perpetual kludgery does not appeal. > > > > What I need is a way to tell a ProxyPass or BalancerMember, that > > they should use a certain Host: header in its communications > > with this backend. e.g. > > BalancerMember http://10.0.0.1/foo/ host=foobar.com > > Now I'm confused. How do your configs actually look like? ProxyPreserveHost Off ProxyPass /foo/ balancer://www.mybackend1.net/ ProxySet lbmethod=bybusyness timeout=10 BalancerMember http://192.168.0.1 lbset=0 retry=0 ttl=5 BalancerMember http://10.0.0.1lbset=1 retry=0 ttl=5 http://192.168.0.1> RequestHeader set Host www.mybackend1.net http://10.0.0.1> RequestHeader set Host www.mybackend1.net ProxyPass /bar/ http://www.mybackend2.net/ ProxyPass /bar1/ http://www.mybackend3.net/ ProxyPass /bar2/ http://www.mybackend4.net/ ... 192.168.0.1 receives 'Host: 192.168.0.1', not the 'Host: www.mybackend1.net' I want it to. www.mybackend2.net receives 'Host: www.mybackend2.net' and I want to keep it that way. > > The logical alternative would have been to be able to specify a > > certain target IP to connect to instead of a certain Host name > > to use e.g. > > BalancerMember http://foobar.com/foo/ address=10.0.0.1 > > > > but I suspect apache would then be unable to set block > > rules for individual balancer members since they'd all declare > > the same URL and you'd be unable to match them individually > > You can use ProxySet > http://httpd.apache.org/docs/current/mod/mod_proxy.html#proxyset > in and > > But ProxySet only allows you to set the same Variables as > ProxyPass does. host is none of them. Indeed. This appears to be the problem. Such an option is missing. DFW - The official User-To-User support forum of the Apache HTTP Server Project. See http://httpd.apache.org/userslist.html> for more info. To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org " from the digest: users-digest-unsubscr...@httpd.apache.org For additional commands, e-mail: users-h...@httpd.apache.org
[users@httpd] mod_proxy_balancer - no way to name pool members by IP.
I've hit a vexing impasse with mod_proxy_balancer. I have a pool of backend boxes. They vhost many domains, so need the specific Host: header in requests to them (the *same* Host: header for all of them) I proxy reqeusts to them potentially thousands of times a second, and their IP's are not going to be changing, so I name the BalancerMembers by IP address, as the DNS lookup overhead is a fatal waste of CPU, especially if your DNS servers melt and your site dies unnecessarily. (No, /etc/hosts is not possible. The sitename has multiple A records, and I make the backends choose individualiseable vhosts. Besides, my hosts file is vast!) Unfortunately, when I try and use mod_headers to set the Host: header for these backend connections, the balancer layer destroys the result and replaces it with the IP. Apparently, if I switch ProxyPreserveHost on, I may get further, but since that's a site-wide setting a side effect would mean all of my other proxied directories would now get the wrong Host: header. All the RewriteRule [P]'s would break and I would have to catch and replace the Host in every single one of them in individual blocks. That deluge of perpetual kludgery does not appeal. What I need is a way to tell a ProxyPass or BalancerMember, that they should use a certain Host: header in its communications with this backend. e.g. BalancerMember http://10.0.0.1/foo/ host=foobar.com The logical alternative would have been to be able to specify a certain target IP to connect to instead of a certain Host name to use e.g. BalancerMember http://foobar.com/foo/ address=10.0.0.1 but I suspect apache would then be unable to set block rules for individual balancer members since they'd all declare the same URL and you'd be unable to match them individually So, I currently can't use my backends in mod_proxy_balancer Does anyone have any suggestions? DFW - The official User-To-User support forum of the Apache HTTP Server Project. See http://httpd.apache.org/userslist.html> for more info. To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org " from the digest: users-digest-unsubscr...@httpd.apache.org For additional commands, e-mail: users-h...@httpd.apache.org