RE: Trying to limit connections per virtual host with mod_cband [** FIXED with mod_vhost_limit **]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Also, you'll need to put the LoadModule mod_vhost_limit directive BEFORE
YOUR VIRTUALHOSTS...

Olivier CHIROUZE
I&0 Infrastructure
Volvo Information Technology
 

> -----Original Message-----
> From: Chirouze Olivier 
> Sent: 16 February 2007 16:03
> To: 'users@xxxxxxxxxxxxxxxx'
> Subject: RE: Trying to limit connections per virtual host 
> with mod_cband [** FIXED with mod_vhost_limit **]
> 
> Hi all.
> 
> This is the full story with... FIX! :-)
> 
> Let me try to make a good "googleable" summary (it took me so 
> much time to sort this out, I'd be happy if someone finds it useful).
> 
> The story begins like this: I was trying to limit the number 
> of simultaneous connections per virtualhost on Apache 2.0.58 
> running as a reverse proxy.
> 1) Apache doesn't allow to limit simultaneous connections per 
> virtualhost (MaxClient only works at server level).
> 2) A few modules exist, but I never managed to have them 
> working with [reverse] proxy. => they only worked when Apache 
> is working as a web server.
> 
> What I realized was quite simple, but so sad: the modules 
> were called AFTER mod proxy. Which makes them useless!
> 
> Thanks to the only answer I had on the forum (thanks a lot to 
> Joshua Slive), I found solutions to change the order in which 
> modules are called.
> 
> I never managed to make mod_cband work (never managed to 
> contact the developer either), but by hacking 
> mod_vhost_limit, that finally worked.
> 
> All modules register to Apache using the following function:
> 
> static void register_hooks(apr_pool_t *p)
> {
>     ap_hook_handler(vhost_limit_handler, NULL, NULL, 
> APR_HOOK_REALLY_FIRST);//APR_HOOK_MIDDLE);
>     ap_hook_post_config(vhost_limit_init, NULL, NULL, 
> APR_HOOK_REALLY_FIRST);//APR_HOOK_MIDDLE);
> }
> 
> Last parameter says "load this module somewhere". Changing 
> APR_HOOK_MIDDLE to APR_HOOK_FIRST would have been too easy: 
> mod_proxy allready says "I'm first" with this value!! Then I 
> found the magic "APR_HOOK_REALLY_FIRST" that finally made the 
> module loaded first. I guess next version of Apache will get 
> the "APR_HOOK_REALLY_REALLY_FIRST" value, and so on :-)
> 
> I can now limit the number of simultaneous connections per 
> virtualhost, before they are forwarded to the webserver by mod proxy.
> 
> I'm happy.
> 
> Olivier
> 
> PS: I will try to contact mod_vhost_limit creator to share 
> the hacking. Open source rules ;-)
> 
> Olivier CHIROUZE
> I&0 Infrastructure
> Volvo Information Technology
>  
> 
> > -----Original Message-----
> > From: Chirouze Olivier 
> > Sent: 09 February 2007 17:08
> > To: 'users@xxxxxxxxxxxxxxxx'
> > Subject: Trying to limit connections per virtual host with mod_cband
> > 
> > Hi,
> > 
> > I'm trying to use mod_cband... but can't manage to!
> > 
> > I've tailed down my conf file to the most simple case with 
> > just one virtual host.
> > What I'm trying to achieve is quite simple: I just want to 
> > limit the number of concurrent connections per virtual host 
> > (a "MaxClient" at the virtualhost level) and I think this is 
> > one of the many features of cband.
> > 
> > How do I test this? Just call multiple times a page that 
> > takes very long to anwser: during all this time, for each 
> > click, a connection on this virtual host stays open on 
> > Apache. (thanks a lot to Georgi Chorbadzhiyski for pointing 
> > me to /status?notable that proves the connections are open on 
> > the right virtual host).
> > 
> > The thing is, on cband-status, I see some rps used, but never 
> > a single connection! (thanks to cband status page: 
> > /cband-status). "Current connection" always stays at 0. And, 
> > in fact, the limit is never used. I set it to 2 and can have 
> > more than 10 concurrent connections. So, in a word, it 
> > doesn't work as expected.
> > 
> > However, I see some "remote client", but always one. The 
> > virtual host is correct, but "Connections Limit/Current" 
> > always says "1/0". I don't understand how a line can be here 
> > with zero connection?
> > 
> > I'm kind of lost after looking around for days and trying all 
> > I can think of (simplifying the config file, unactivating 
> > modules, changing order of LoadModule, using OpenSta, etc...)
> > 
> > I'm using mod_rewrite and mod_proxy and I think that might be 
> > the pb. But there is an example with mod_rewrite on cband 
> > homepage so I suppose there is no incompatibility!
> > 
> > Please... Help ;-)
> > 
> > Olivier
> > 
> > Olivier CHIROUZE
> > I&0 Infrastructure
> > 
> > The conf file:
> > --------------------------------------------------------------
> > ------------------------------------------
> > 
> > ServerRoot /data/apache/httpd-test1
> > 
> > # This only contains standard httpd.conf file with the 
> > following modules activated:
> > #LoadModule access_module modules/mod_access.so
> > #LoadModule log_config_module modules/mod_log_config.so
> > #LoadModule logio_module modules/mod_logio.so
> > #LoadModule env_module modules/mod_env.so
> > #LoadModule setenvif_module modules/mod_setenvif.so
> > #LoadModule ssl_module modules/mod_ssl.so
> > #LoadModule mime_module modules/mod_mime.so
> > #LoadModule status_module modules/mod_status.so
> > #LoadModule negotiation_module modules/mod_negotiation.so
> > #LoadModule dir_module modules/mod_dir.so
> > #LoadModule alias_module modules/mod_alias.so
> > Include 
> > /data/apache/httpd-test1/appli-apache/conf/httpd_solaris28.conf
> > 
> > ServerName  reverse-proxy-test2.iteu.volvo.net
> > 
> > User apache
> > Group apache
> > 
> > DocumentRoot "/data/apache/httpd-test1/htdocs"
> > 
> > ServerAdmin apache@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> > 
> > LoadModule cband_module choucroutemodules/mod_cband.so
> > 
> > LoadModule proxy_module modules/mod_proxy.so
> > 
> > LoadModule proxy_http_module modules/mod_proxy_http.so
> > 
> > CustomLog /logs/apache/httpd-test1/logs/rproxy_log "%{Host}i 
> > |%{RULE}e| %{%H/%T}t %h -> %{SERVER}e URL: %U"
> > 
> > UseCanonicalName Off
> > 
> > <VirtualHost reverse-proxy-test2.iteu.volvo.net:80>
> > 	<Location /status>
> > 		SetHandler server-status
> > 		Order deny,allow
> > 		Allow from all
> > 	</Location>
> > 	<Location /info>
> > 	    SetHandler server-info
> > 	</Location>
> > </VirtualHost>
> > 
> > LoadModule rewrite_module     modules/mod_rewrite.so
> > 
> > RewriteEngine on
> > RewriteLog	/logs/apache/httpd-test1/logs/rewrite_log
> > RewriteLogLevel 0
> > 
> > LogLevel debug
> > 
> > Listen		reverse-proxy-test2.iteu.volvo.net:80
> > NameVirtualHost reverse-proxy-test2.iteu.volvo.net:80
> > 
> > <IfModule mod_cband.c>
> > 	<Location /cband-status>
> > 		SetHandler cband-status
> > 		Order deny,allow
> > 		Allow from all
> > 	</Location>
> > 	<Location /cband-status-me>
> > 		SetHandler cband-status-me
> > 		Order deny,allow
> > 		Allow from all
> > 	</Location>
> > </IfModule>
> > 
> > <IfModule mod_cband.c>
> >         CBandSpeed 0 0 10
> > 	CBandScoreFlushPeriod 1
> > 	CBandRandomPulse On
> > </IfModule>
> > 
> > <VirtualHost reverse-proxy-test2.iteu.volvo.net:80>
> > ServerName      youpi.volvo.net
> > 
> > <IfModule mod_cband.c>
> >         CBandRemoteSpeed 0 3 1
> >         CBandSpeed 0 0 2
> >         CBandDefaultExceededCode 503
> >         CBandScoreboard /tmp/apache/scoreboard
> >         CBandPeriod 2s
> > </IfModule>
> > 
> > RewriteEngine   on
> > RewriteLog      /logs/apache/httpd-test1/logs/rewrite_log
> > RewriteLogLevel 3
> > Include         conf/deny_patterns.conf
> > 
> > RewriteRule     ^/(.*)$ 
> http://10.213.131.69/waitZoub.php?wait=$1 [P]
> > 
> > ProxyRequests   off
> > 
> > KeepAlive Off
> > 
> > </VirtualHost>

---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@xxxxxxxxxxxxxxxx
   "   from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx
For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx



[Index of Archives]     [Open SSH Users]     [Linux ACPI]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Squid]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux