A idéia por trás do cálculo é que você precisa manter alguma memória para outras coisas - o sistema operacional e outros serviços em execução na instância. Depois disso, o que quer que você tenha, você divide pela memória média usada (tamanho do conjunto de residentes - coluna RSS) para obter o número máximo de threads que seu servidor pode manipular sem ficar sem memória.
Dito isso, eu gosto de fazer o meu cálculo de maneira um pouco diferente, mas vou abordar isso mais tarde.
A partir do httpd.conf:
prefork MPM
- StartServers: número de processos do servidor para iniciar
- MinSpareServers: número mínimo de processos do servidor que são mantidos livres
- MaxSpareServers: número máximo de processos do servidor que são mantidos livres
- ServerLimit: valor máximo para MaxClients durante a vida útil do servidor
- MaxClients: número máximo de processos do servidor com permissão para iniciar
- MaxRequestsPerChild: número máximo de solicitações que um processo do servidor exibe
A configuração que você mostrou manterá 10 processos em execução constantes: você inicia 10 processos (StartServers) e tem no máximo 10 processos de servidor permitidos (MaxClients). Nesse caso, os MinSpareServers e MaxSpareServers não devem entrar em jogo. Depois que um processo do servidor atender a 4.000 solicitações, ele será finalizado e um novo será criado em seu lugar (para tentar limitar vazamentos de memória, etc.)
Assim, a suposição feita é que tudo o mais no seu servidor usará cerca de 80MB de memória - deixando-o com 530MB. Divida isso pelo tamanho médio do processo (53MB) para obter 10 processos.
Eu sugeriria que a suposição está um pouco errada. Se você estiver executando qualquer outra coisa (por exemplo, MySQL) no servidor, você definitivamente precisa manter mais memória na reserva. Além disso, não há espaço para a variação incluída. Para a estimativa, deixo pelo menos 120 MB para o sistema operacional e outros serviços e, em seguida, reduzo o restante em 10% para a variação. Então, cerca de 8 processos apache max.
<IfModule prefork.c>
StartServers 2
MinSpareServers 1
MaxSpareServers 3
MaxClients 8
MaxRequestsPerChild 1000
</IfModule>
Assim, com o acima - há um máximo de 8 processos. Estamos apenas começando 2. Gostaríamos que pelo menos um ocioso a qualquer momento - mas não mais que 3 ocioso. Além disso, como a memória é um problema, a MaxRequestsPerChild foi reduzida.
Agora, eu prefiro calcular o número executando um pouco o servidor, depois parando o apache e vendo quanta memória o resto do sistema está usando. Subtraia esse número do total, tome 90% e divida pelo tamanho médio do processo do apache. Especialmente para configurações mais complexas, isso dá um valor mais realista.
Como ponto de referência, em uma caixa restrita de memória, o Nginx provavelmente é preferível ao Apache como um servidor da web. Além disso, você definitivamente deseja algum espaço de troca em um t1.micro (embora você não deva se encontrar usando muito).