O tempo limite do Apache durante pequenos picos de carga

1

Estou executando o Apache 2.4.17 (prefork) em um servidor Centos 7. As especificações do servidor são muito boas: 2 x Xeon E5-2697 v3 a 2.60GHz, 512GB de RAM e 8 SSDs no RAID 10.

Este servidor Apache é usado para executar um software PHP.

A carga normal é entre 8 e 15, mas devido às especificações do servidor, é muito responsiva. Além disso, o número de solicitações / seg está abaixo de 300.

Percebi que às vezes o Apache expira até mesmo para solicitações locais . Isso acontece quando as solicitações / s são maiores que 400 e / ou a carga é 20 +.

Se eu repetir a solicitação, tudo funcionará bem.

Aqui está a configuração relevante:

Timeout 300
KeepAlive On
MaxKeepAliveRequests 500
KeepAliveTimeout 2

<IfModule mpm_prefork_module>
    ServerLimit 2000
    StartServers            30
    MinSpareServers         20
    MaxSpareServers         80
    MaxRequestWorkers      2000
    MaxConnectionsPerChild   50000
</IfModule>

Algumas notas:

  1. O log de erros do Apache não mostra nenhum erro.
  2. Mesmo quando isso acontece, o servidor é responsivo. Eu posso acessá-lo usando o SSH e outros serviços funcionam bem.
  3. Eu tenho munin instalado. Quando o problema ocorre pelo menos 50%, a RAM é livre, o uso da CPU é de aproximadamente 70% e o uso de E / S é muito baixo.

Como posso obter mais informações sobre esse problema? O que poderia causar esse tipo de tempo limite?

    
por Fernando 07.09.2016 / 21:49

1 resposta

1

Depois de muitos testes, alterações de configuração, etc. Eu não consegui corrigir esse problema com o Apache 2.4.

Eu decidi experimentar o Apache 2.2 usando a mesma configuração. Eu apenas removi algumas coisas que eram diretivas específicas do Apache 2.4.

Simplesmente funcionou. Mesmo servidor, configuração, aplicativo e carga. Com o Apache 2.2, não consigo mais os tempos limite.

    
por 13.09.2016 / 00:17

Tags