O uso da CPU do Apache aumenta com o tempo em um cluster grande [fechado]

1

Eu tenho um estranho que acabei de notar ontem. Em um período de 24 horas, a carga da CPU em nossas máquinas Apache (16 máquinas de núcleo duplo hexagonal) dobra. Nós lidamos com cerca de 8 bilhões de solicitações por mês, e tudo fica atrás de balanceadores de carga haproxy. O número de processos em execução em cada máquina é sempre o mesmo (limitado ao balanceador de carga) e qualquer fila é construída no haproxy. Nós limitamos o número de sessões em execução no haproxy a 90 por máquina (escolhido por causa dos limites de ram e cpu em cada máquina)

No momento, estamos usando o evento mpm com a seguinte configuração:

event MPM
<IfModule event.c>
    ServerLimit           15
    MaxClients           960
    StartServers           2
    ThreadsPerChild       64
    ThreadLimit           64
    MinSpareThreads       32
    MaxSpareThreads      112
    MaxRequestsPerChild 20000
</IfModule>

Na taxa atual, as solicitações de 20K devem significar que o encadeamento é reiniciado a cada 2 minutos ou mais.

O uso de memória é baixo. Temos 12gb de ram em cada máquina, e no pico eles usam apenas 7gb. A reinicialização do apache imediatamente diminui a carga pela metade e permanece assim por várias horas.

Alguma ideia ou informação adicional necessária?

    
por Brian Lovett 18.09.2013 / 16:48

1 resposta

0

O que eu posso sugerir é que você aumente o limite haproxy de 90 clientes.

Como a sua memória é de cerca de 7G em 12Gb, você pode fazer mais clientes.

As minhas recomendações são as seguintes:

Se o seu aplicativo puder manipular o mpm_worker, seria muito melhor usar o worker do que o prefork para usos da RAM.

Parece que seu servidor está ocupado o tempo todo, então faça um sanse Use um servidor High start, porque o apache só vai começar a servir depois de criar esse processo, então isso fará com que seu saldo comece a enviar requisições para um servidor, quando é que tem muito processo para o servidor (isso fará com que eu lento servidor apache de inicialização)

Eu posso tentar dizer mais se eu tiver mais informações ... Quero dizer, talvez você prefira ter 6 máquinas com 12GB de RAM ... quando você pode rodar em 4 máquinas com a configuração certa!

Não vejo por que diminuir o valor de MaxRequestPerChild é melhor na CPU, mas é melhor que o aplicativo se comporte mal. Você tem que usar mais ciclos de CPU para matar um processo e iniciar um novo. Quer dizer, se você cortar pela metade a MaxRequestPerChild, teria que criar duas vezes mais processos do que antes.

CPU high doest significa algo ruim ... Pode ser que esteja fazendo muito trabalho

Que tipo de aplicativo você executa? Que módulo do apache ... Ele vê que seu aplicativo usa muito mais RAM do que o próprio apache.

    
por 19.09.2013 / 05:40