Otimize o Apache para solicitações simultâneas altas

2

Estou executando um servidor Apache2 Ubuntu que atende a solicitação da API de aplicativos para dispositivos móveis.

Recentemente, estou enfrentando um gargalo que, quando a solicitação está aumentando (mais usuários simultâneos), a resposta da solicitação está ficando lenta. Anteriormente, ~ 1 ou 2 segundos funcionarão, mas quando os usuários simultâneos aumentarem (em determinada hora de pico), ele poderá atrasar até 10 segundos ou mais, mesmo que a carga do servidor, a CPU e a Memória permanecem muito baixas.

Meu objetivo é aumentar a capacidade do Apache2 e do Ubuntu Server de atender o máximo possível de usuários simultâneos no menor tempo de resposta. A memória e CPU não é um fator importante de consideração porque a especificação do VPS pode ser ampliada se atingir o limite. Como posso fazer isso?

O que eu fiz até agora:

  1. Configure o ulimit /etc/security/limits.conf e adicione o seguinte:

    • soft nofile 40000
    • hard nofile 40000
    • soft nproc 40000
  2. Adicione a seguinte linha ao /etc/pam.d/common-session

    sessão necessária pam_limits.so

  3. Configure o Apache2 /etc/apache2/mods-enabled/mpm_prefork.conf

    <IfModule mpm_prefork_module>
            StartServers              20
            MinSpareServers           25
            MaxSpareServers          100
            MaxRequestWorkers         150
            MaxConnectionsPerChild   0

            MaxClients              8192
            MaxRequestsPerChild     0
            ServerLimit             8192
     </IfModule>
  1. Adicione a seguinte linha ao /etc/sysctl.conf

    fs.file-max = 2097152

O tempo de resposta parece ser melhorado (embora algumas solicitações ainda atrasem), mas não é satisfatório, pois ainda é muito mais lento que a hora fora do horário de pico.

    
por neobie 28.07.2015 / 09:44

2 respostas

1

Pare de usar o módulo prefork e comece a usar o evento mpm no apache. Prefork é o método antigo e seguir em frente você deseja instalar o evento mpm.

    
por 31.07.2015 / 20:22
0

Isso pode não ser seu servidor da Web, mas algo diferente na cadeia.

  1. DNS. Na situação, quando não é obviamente o banco de dados, há uma boa chance de que seja o DNS. Faça um nslookup e veja quanto tempo o comando demora. Em seguida, pesquise alguns domínios.
  2. É a rede, faça um traceroute e veja se algum dos saltos na sua rede está demorando mais do que o normal.
  3. Netstat -i 5 para ver se há algum erro na interface de rede.
  4. Verifique se KeepAlive está ativado. Especialmente se você gosta de um site pesado de ajax, você irá melhorar o desempenho.

Eu não acredito que mudar o MPM irá ajudá-lo. Sua situação não é restrição de recursos. é outra coisa.

    
por 25.08.2015 / 03:33