O que você está tentando evitar são solicitações de entrada que fazem com que novos processos sejam bifurcados a uma taxa maior do que os processos mais antigos podem atender às conexões mais antigas. Esse risco está causando uma situação em que o sistema continua criando novos processos que consomem a memória disponível e começa a aumentar a frequência em que o sistema operacional usa swap. O que, por sua vez, causa um grande aumento na E / S do disco, onde o sistema está apenas trocando páginas da memória física para a memória virtual (no disco) e vice-versa, sem qualquer benefício real para a carga de trabalho.
A fórmula geral para começar é:
(Memória total - Memória do sistema operacional - memória do banco de dados) / Tamanho por processo do Apache.
A fórmula é apenas parte da equação. Quanto mais você dá o sistema e a memória do MySQL, mais cache do sistema de arquivos eles fazem para você e evita que o disco seja muito caro. Se o banco de dados não estiver no mesmo sistema, isso é um problema menor.
O outro cenário que acontece se você não ajustar o Apache corretamente e a frequência de aumentos de troca é que os usuários iniciam o hit stop e recarregam, aumentando artificialmente a carga no servidor. Você pode controlar a configuração MaxRequestWorkers
para que seu servidor não gere tantos filhos que ele comece a trocar. Parece simples que você apenas determine o tamanho do seu processo Apache médio, olhando para sua lista de processos através de uma ferramenta como top ou smem e então divida isso em sua memória total disponível, enquanto deixa memória suficiente para outros processos que você irá usar. obter uma imagem mais precisa.
O outro parâmetro-chave neste cenário é ServerLimit
. Se ServerLimit
for definido com um valor muito maior do que o necessário, a memória compartilhada extra não utilizada será alocada. Se ServerLimit
e MaxRequestWorkers
estiverem definidos como altos. O desempenho do httpd de Apache e a estabilidade geral geral do httpd do Apache podem começar a se tornar um problema.