Módulo do Easy Apache para limitar os pedidos com base na carga da máquina?

2

Eu tenho um servidor Apache que está servindo um aplicativo django com o mod_wsgi. Eu estou querendo saber se existe uma maneira simples de estrangular as solicitações no nível do apache com base na carga da máquina.

Idealmente, eu quero um módulo do Apache que, se a carga estiver abaixo de um determinado valor, tudo funcione bem. No entanto, se a carga estiver acima de algo, então X% dos endereços IP serão exibidos na página HTML estática por Y minutos. Esse software existe?

Estamos à procura de um "sistema de estrangulamento do homem pobre". Algo rápido e fácil que podemos incluir. O afogamento baseado na carga da máquina é bom porque significa que as coisas acabarão voltando ao normal.

Nosso aplicativo da web faz muito processamento, então coisas que limitam a largura de banda não vão melhorar, não é a largura de banda que queremos "estrangular", mas solicitações. Idealmente, gostaríamos que alguns pedidos existentes (isto é, baseados no endereço IP) pudessem continuar por um determinado período de tempo (para que eles pudessem terminar de fazer suas coisas).

    
por Rory 21.01.2013 / 13:30

2 respostas

0

Eu nunca configurei isso, e eu aprecio isso não é exatamente o que você está procurando (ou seja, não é um módulo do apache), mas há uma ferramenta chamada controle de tráfego. Dado que tc é invocado por uma linha de comando simples, parece provável que você possa integrá-lo em seu próprio script e instigar a limitação que você quer com base na saída de carga do topo, ou qualquer outra coisa que você tenha carga de monitoramento.

Há um script de exemplo nesta página: link

    
por 21.01.2013 / 17:28
0

Disclaimer: Eu sou um fanboy de verniz.

Não tenho conhecimento de nenhum módulo oficial do apache que faça isso nativamente.

Varnish pode servir html estático se backend (django) não responder dentro do tempo especificado.

Se você realmente deseja veicular um arquivo estático para 10% dos visitantes com base na média de carga, acho que isso pode ser feito com vmods (eu acho que você terá que escrever o seu próprio).

    
por 21.01.2013 / 18:43