como faço para sintonizar um tráfego de um dia por ano [duplicado]

1

Eu dirijo um site como um serviço para a comunidade estadual de natação do ensino médio. Eu faço isso por amor ao esporte, então não posso gastar uma quantia ridícula em hospedagem, etc. Nem preciso - exceto por um dia por ano.

Todos os treinadores enviam suas inscrições regionais através do meu site e, de forma típica, todos esperam até a data de vencimento para fazê-lo. Isso foi ontem, e meu site, que nunca caiu durante toda a temporada, parou pelo menos 4 vezes ao longo do dia. Nunca se foi por mais de uma hora e sempre voltou. (Eu emiti o apache reinicia apenas para ter certeza).

Minha pergunta é: como posso ajustar o Apache para lidar com uma onda de usuários de um dia? Não faz sentido pagar por mais hardware durante um ano inteiro, quando preciso apenas de um dia de aumento de desempenho. Eu tentei ler sobre prefork.c e worker.c, mas eu simplesmente não entendi bem o suficiente. Aqui está minha configuração atual:

<IfModule prefork.c>
 StartServers       1
 MinSpareServers    1
 MaxSpareServers    5
 ServerLimit       10
 MaxClients        10
 MaxRequestsPerChild  4000
 </IfModule>

 <IfModule worker.c>
 StartServers       1
 MaxClients        10
 MinSpareThreads    1
 MaxSpareThreads    4
 ThreadsPerChild     25
 MaxRequestsPerChild  0
 </IfModule>

A maioria dos usuários que eu esperaria de uma vez seria de 400. Provavelmente muito menos que isso. Eu só tinha cerca de 70 ontem e não teve um bom desempenho. Alguma sugestão?

ATUALIZAÇÃO:

  728 root      20   0  317m  20m 7752 S  0.0  2.7   0:49.58 httpd
19700 webuser   20   0  489m  37m 6792 S  0.0  4.9   0:00.72 httpd
19737 webuser   20   0  493m  42m 6624 S  0.0  5.5   0:00.59 httpd
19756 webuser   20   0  494m  43m 6604 S  0.0  5.7   0:00.58 httpd
19758 webuser   20   0  495m  44m 6780 S  0.0  5.8   0:00.97 httpd
19777 webuser   20   0  493m  42m 6620 S  0.0  5.5   0:01.08 httpd

Dê uma olhada nos recursos e não tenho certeza do que estou vendo. O processo de propriedade do root deve ser aquele que executa o Apache. São aqueles de propriedade do webuser gerados pelo próprio Apache? Por que eles são tão grandes? O servidor tem cerca de 3 / 4G de RAM, se eu calcular 1/2 para o Apache, e os processos estão mantendo 40M, como posso estimar o número de usuários simultâneos possíveis?

    
por Eddie Rowe 29.01.2018 / 14:56

1 resposta

0

Vou tentar esboçar alguma regra geral, dado que você forneceu muito poucos detalhes sobre o seu ambiente:

  1. Primeiro, verifique qual módulo mpm seu Apache está usando, para que você saiba qual dos dois blocos de configuração que você postou você precisa ajustar:

    apachectl -D DUMP_MODULES | egrep -i "prefork|worker"

  2. Se você está no modo prefork e está executando algum tipo de aplicativo php via mod_php , o motivo de seus processos do Apache se tornarem enormes ao longo do tempo é mais e mais código php e dados sendo carregados ram pelo módulo toda vez que o aplicativo receber novas solicitações dos clientes. Para manter o tamanho dos processos pequenos, tente reduzir MaxRequestsPerChild para algo como 500. Cada processo será eliminado depois de ter atendido MaxRequestsPerChild solicitações, e um novo será acionado (o que, esperamos, terá um menor consumo de memória) . Isso tem um custo de desempenho, uma vez que os novos processos serão re-gerados com mais frequência, mas como você está tentando manter seu serviço em execução, não para torná-lo muito rápido, deve ser uma troca aceitável.

  3. Você não deseja que seu servidor da Web troque: certifique-se de que o consumo máximo de RAM de cada processo do Apache vezes ServerLimit ou MaxClients nunca exceda 75% da memória disponível do servidor.

  4. Se puder, mude para a AWS ou para um provedor de serviços de nuvem semelhante: a AWS é capaz de aumentar e diminuir automaticamente o seu servidor em um horário predeterminado. "Autoscaling" é um sniffer da nuvem em 90% dos cenários do mundo real, mas o seu caso é possivelmente um dos poucos que poderiam realmente se beneficiar do recurso. Você não deve perder a oportunidade.

  5. Se você está enfrentando esse tipo de problema enquanto atende 70 clientes em um servidor com 4 GB de RAM, suspeito que algo de errado está acontecendo sob o capô, mas, novamente, você forneceu detalhes insuficientes para fazer qualquer coisa, mas um palpite educado

por 29.01.2018 / 19:01