Antes de personalizar as diretivas, você precisa entender como elas funcionam. Deixe-me explicar em inglês simples. O servidor iniciará 2 processos filhos, determinados pela diretiva StartServers. Cada processo iniciará 20 threads, os quais são determinados pela diretiva ThreadsPerChild, o que significa que 2 processos podem atender apenas 40 conexões / clientes simultâneos (ou seja, 20 × 2 = 40). E daí se mais solicitações forem recebidas.
Agora, se houver mais usuários simultâneos, outro processo filho será iniciado, que poderá atender outros 20 usuários. Mas quantos processos filhos podem ser iniciados é controlado pelo parâmetro ServerLimit, isso significa que, na configuração acima, eu posso ter 10 processos filhos no total, cada processo filho pode lidar com 20 encadeamentos, no total 10 × 20 = 200 usuários simultâneos .
Mas há um problema, o número definido no MaxClients é 100 aqui, isto significa que, após 5 processos filhos, nenhum processo extra será iniciado, pois definimos um limite máximo para o MaxClients. Isso também significa que, se eu definir MaxClients como 500, após 10 processos filhos e 200 conexões, nenhum processo extra será iniciado e não poderemos atender mais de 200 clientes simultâneos, mesmo que tenhamos aumentado o parâmetro MaxClient. Nesse caso, também precisamos aumentar o ServerLimit para 500/20, ou seja, MaxClients / ThreadsPerChild = 25
Ok, agora você conhece as diretivas e como elas funcionam, o problema é como calcular as diretivas. Vamos pular para o cálculo dos valores da diretiva.
Você pode usar esse script de shell para determinar uma quantidade média de memória consumida por um processo Apache. Além disso, mostrará a quantidade total de memória consumida por todos os processos do Apache. Apenas descompacte e execute com o comando sh. Resultados precisos serão mostrados quando o servidor estiver sob carga pesada.
A saída
Uso de memória Apache (MB): 57,586 Tamanho médio do processo (MB): 10,2
Apache Memory Usage (MB): 57.586
Average Proccess Size (MB): 10.2
se, em média, vamos supor que um processo Apache consome 50 MB de RAM e o servidor tenha 2048 MB, e você deseja deixar 512 MB para o restante dos processos;
MaxClients = (2048MB – 512MB)/10MB = 153.6 ~ 153