Atualmente estou na versão Apache / 2.4.23 e estou executando vários sites de host virtual no meu servidor da Web, atrás de um ELB. Eu tenho 4 instâncias sob meu ELB cada um com 8 GB de RAM total. Nestes webservers eu não vejo nenhuma diretiva mpm definida no meu arquivo httpd.conf onde eu pude ver os valores padrão das diretivas de módulos mpm no arquivo httpd-mpm.conf (em /usr/share/doc/httpd24-2.4 .23). Meu servidor está usando o módulo mmp do prefork
httpd -V | grep MPM
Server MPM: prefork
Atualmente, todos os quatro servidores estão tendo apenas cerca de 200MB de espaço livre de 8GB e vejo que há sempre cerca de 60 processos de httpd em execução. Abaixo estão as métricas
[root@ip ~]# ps -ef | grep httpd | wc -l
58
[root@ip ~]# ps -ylC httpd | awk '{x += $8;y += 1} END {print "Apache Memory Usage (MB): "x/1024; print "Average Proccess Size (MB): "x/((y-1)*1024)}'
Apache Memory Usage (MB): 1640.18
Average Proccess Size (MB): 38.1438
[root@ip ~]# free -m
total used free shared buffers cached
Mem: 7986 7755 231 51 114 233
-/+ buffers/cache: 7407 579
Swap: 0 0 0
Para aumentar o desempenho do meu servidor, estou planejando atualizar meu arquivo httpd.conf com as diretivas abaixo do mpm do prefork. A única coisa que gostaria de alterar é o valor de MaxRequestWorkers de 250 a 400.
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>
Editar : Abaixo estão as configurações padrão no arquivo httpd-mpm.conf. Mas eu não vejo nenhuma configuração de módulos do mpm prefork no arquivo httpd.conf, assumindo assim que o meu servidor web está usando abaixo dos valores padrão
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 250
MaxConnectionsPerChild 0
</IfModule>
Abaixo está a saída principal:
top - 13:26:31 up 21:08, 1 user, load average: 0.27, 0.17, 0.12
Tasks: 201 total, 1 running, 199 sleeping, 0 stopped, 1 zombie
Cpu(s): 0.7%us, 0.3%sy, 0.0%ni, 98.3%id, 0.7%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 8178632k total, 7985364k used, 193268k free, 113336k buffers
Swap: 0k total, 0k used, 0k free, 189448k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
26918 apache 20 0 764m 53m 39m S 0.0 0.7 0:01.65 httpd
24963 apache 20 0 769m 50m 36m S 0.3 0.6 0:01.39 httpd
26026 apache 20 0 769m 49m 34m S 0.0 0.6 0:00.81 httpd
26116 apache 20 0 769m 47m 32m S 0.0 0.6 0:01.06 httpd
25766 apache 20 0 769m 47m 32m S 0.0 0.6 0:00.95 httpd
27620 apache 20 0 769m 47m 32m S 0.0 0.6 0:00.47 httpd
26548 apache 20 0 769m 47m 32m S 0.0 0.6 0:00.66 httpd
27128 apache 20 0 769m 46m 32m S 0.0 0.6 0:01.16 httpd
28247 apache 20 0 769m 46m 31m S 0.0 0.6 0:00.24 httpd
27670 apache 20 0 769m 46m 31m S 0.0 0.6 0:00.32 httpd
27424 apache 20 0 769m 46m 31m S 0.0 0.6 0:00.41 httpd
24378 apache 20 0 763m 46m 33m S 0.0 0.6 0:01.28 httpd
26800 apache 20 0 763m 45m 32m S 0.0 0.6 0:00.75 httpd
27672 apache 20 0 763m 45m 31m S 0.0 0.6 0:00.53 httpd
26614 apache 20 0 762m 45m 33m S 0.0 0.6 0:00.88 httpd
25098 apache 20 0 762m 44m 32m S 0.0 0.6 0:01.20 httpd
26671 apache 20 0 763m 44m 31m S 0.0 0.6 0:00.64 httpd
27635 apache 20 0 763m 44m 31m S 0.0 0.6 0:00.61 httpd
23499 apache 20 0 763m 43m 29m S 0.0 0.5 0:01.77 httpd
26285 apache 20 0 767m 43m 29m S 0.3 0.5 0:00.70 httpd
27868 apache 20 0 761m 42m 31m S 0.3 0.5 0:00.70 httpd
26444 apache 20 0 763m 42m 29m S 0.0 0.5 0:00.73 httpd
26081 apache 20 0 763m 42m 29m S 0.0 0.5 0:00.68 httpd
25467 apache 20 0 763m 42m 29m S 0.0 0.5 0:00.99 httpd
26412 apache 20 0 763m 42m 28m S 0.0 0.5 0:00.53 httpd
27412 apache 20 0 763m 42m 29m S 0.0 0.5 0:00.45 httpd
26720 apache 20 0 763m 42m 29m S 0.0 0.5 0:00.51 httpd
26179 apache 20 0 763m 42m 29m S 0.0 0.5 0:00.59 httpd
25943 apache 20 0 763m 42m 29m S 0.0 0.5 0:00.78 httpd
27570 apache 20 0 763m 42m 28m S 0.0 0.5 0:00.28 httpd
26721 apache 20 0 763m 42m 28m S 0.0 0.5 0:00.46 httpd
27252 apache 20 0 763m 42m 28m S 0.0 0.5 0:00.54 httpd
27408 apache 20 0 763m 42m 28m S 0.0 0.5 0:00.29 httpd
27612 apache 20 0 763m 42m 28m S 0.0 0.5 0:00.36 httpd
27576 apache 20 0 763m 42m 28m S 0.0 0.5 0:00.28 httpd
27668 apache 20 0 883m 41m 28m S 0.0 0.5 0:00.31 httpd
27626 apache 20 0 763m 41m 28m S 0.0 0.5 0:00.32 httpd
Minha pergunta é: essa mudança ajudará meu servidor da Web a usar menos memória do sistema e lidará com o carregamento de maneira eficiente. E como o espaço livre é menor no meu servidor, a alteração do valor de 250 para 400 para o MaxRequestWorkers causará mais problemas ? Existe alguma solução melhor para otimizar o consumo de memória no meu servidor?