Pages

Wednesday, April 15, 2009

Limitando banda de download no apache

Para limitar banda diretamente no apache, pode-se utilizar o módulo mod-bw.

O site oficial é: http://bwmod.sourceforge.net/

Esta dica é útil quando se tem uma ADSL em casa ou um link pequeno em alguma empresa quando se tem arquivos para download em um servidor WEB apache. Assim você consegue limitar o uso de banda para download diretamente no apache.

Antes de iniciar a instalação no opensuse, é preciso instalar o pacote apache2-devel.

Se o zypper estiver configurado para obter os repositórios externos é só fazer isso:

zypper install apache2-devel


Na sequência pode-se iniciar a compilação do mod-bw.

wget http://bwmod.sourceforge.net/files/mod_bw-0.7.tgz
tar xvzf mod_bw-0.7.tgz
cd mod_bw



Edite o arquivo mod_bw.c e localize a seção abaixo:

/* Compatibility for ARP < 1 */
#if (APR_MAJOR_VERSION < 1)
#define apr_atomic_inc32 apr_atomic_inc
#define apr_atomic_dec32 apr_atomic_dec
#define apr_atomic_add32 apr_atomic_add
#define apr_atomic_cas32 apr_atomic_cas
#define apr_atomic_set32 apr_atomic_set
#endif



E deixe a seção acima conforme está abaixo:

/* Compatibility for ARP < 1 */
/*
#if (APR_MAJOR_VERSION < 1)
#define apr_atomic_inc32 apr_atomic_inc
#define apr_atomic_dec32 apr_atomic_dec
#define apr_atomic_add32 apr_atomic_add
#define apr_atomic_cas32 apr_atomic_cas
#define apr_atomic_set32 apr_atomic_set
#endif
*/


Isso porque se deixar como o default, o apache não irá inicializar, e dará um erro como o seguinte:

httpd2-prefork: Syntax error on line 116 of /etc/apache2/httpd.conf: Syntax error on line 33 of /etc/apache2/sysconfig.d/loadmodule.conf: Cannot load /usr/lib/apache2/mod_bw.so into server: /usr/lib/apache2/mod_bw.so: undefined symbol: apr_atomic_cas


Após a alteração, faça a compilação do módulo:

apxs2 -i -a -c mod_bw.c


Para configurar o módulo, edite o arquivo de configuração do seu server apache, no meu caso /etc/apache2/default-server.conf porque não utilizao mais de um domínio. E adicione o conteúdo abaixo no arquivo.

BandWidthModule On
ForceBandWidthModule On
BandWidth 192.168.0.0/24 0
BandWidth all 60000



Explicando as linhas
1a. Habilita o controle de banda
2a. Garante que cada requisição http será "controlada"
3a. Diz que a rede interna (192.168.0.0/24) não será limitada
4a. Diz que todo o resto será limitado em 60K/s


É isso ai! só fazer o teste agora, faça o teste antes de colocar o módulo em ação e depois ative o mesmo e veja a diferença na taxa de transferência.

Fabio

No comments:

Post a Comment