Vou tentar esboçar alguma regra geral, dado que você forneceu muito poucos detalhes sobre o seu ambiente:
-
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"
-
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 reduzirMaxRequestsPerChild
para algo como 500. Cada processo será eliminado depois de ter atendidoMaxRequestsPerChild
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. -
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
ouMaxClients
nunca exceda 75% da memória disponível do servidor. -
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.
-
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