Tendo alguns problemas com o uso de memória httpd
( Apache/2.2.29
).
Com o tempo, o uso da memória nos httpd
processos aumenta até chegar a 100%.
A última vez que reiniciei httpd
foi cerca de 24 horas atrás. A saída de free -m
é:
[ec2-user@www ~]$ free -m
total used free shared buffers cached
Mem: 1655 1415 239 0 202 424
-/+ buffers/cache: 788 866
Swap: 1023 4 1019
Para provar que é definitivamente httpd
, reiniciei httpd
e corri free -m
novamente:
[ec2-user@www ~]$ sudo service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
[ec2-user@www ~]$ free -m
total used free shared buffers cached
Mem: 1655 760 894 0 202 360
-/+ buffers/cache: 197 1457
Swap: 1023 4 1019
Portanto, reiniciar o Apache leva a memória livre de 239 Mb para 894 Mb - o que parece um grande salto.
Venho examinando a lista de módulos Apache atualmente ativados (há bastante) e desativado / removido mod_wsgi
e mod_perl
(nenhum dos quais é necessário para este servidor, que está executando um aplicativo Web baseado em PHP - Magento, especificamente).
Com base em https://servercheck.in/blog/3-small-tweaks-make-apache-fly , executei ps aux | grep 'httpd' | awk '{print $6/1024 " MB";}'
e obtive a seguinte saída:
[root@www ~]# ps aux | grep 'httpd' | awk '{print $6/1024 " MB";}'
15.1328 MB
118.09 MB
127.449 MB
129.059 MB
117.734 MB
113.824 MB
125.062 MB
123.922 MB
119.855 MB
108.066 MB
136.23 MB
114.031 MB
113.27 MB
110.695 MB
102.113 MB
113.234 MB
186.816 MB
118.602 MB
0.835938 MB
A execução da outra ferramenta de diagnóstico sugerida para a MaxClients
qual ps aux | grep 'httpd' | awk '{print $6/1024;}' | awk '{avg += ($1 - avg) / NR;} END {print avg " MB";}'
retorna o seguinte:
[root@www ~]# ps aux | grep 'httpd' | awk '{print $6/1024;}' | awk '{avg += ($1 - avg) / NR;} END {print avg " MB";}'
110.212 MB
Este servidor ( m1.small
instância do Amazon AWS ) possui 1.7 Gb
RAM. Então, portanto:
Mais sugestões / sugestões sobre a melhor forma de ajustar as httpd
configurações ou como diagnosticar o que exatamente pode estar causando isso?
nginx
então talvez seja a hora de tentarmos, mas honestamente, eu uso o Apache há anos e nunca tive grandes problemas. Magento realmente mastiga memória embora.
grep httpd
(pelo menos para mim). Para corrigir isso, eu recomendaria excluir essa linha do cálculo da seguinte maneira:ps aux | grep 'httpd' | grep -v grep | awk '{print $6/1024;}' | awk '{avg += ($1 - avg) / NR;} END {print avg " MB";}'
-/+ buffers/cache
linha; no entanto, neste caso, a alteração é comparável. Dependendo de como o apache foi ajustado, ele pode começar com apenas alguns processos prontos para lidar com solicitações; após um período de muitas solicitações simultâneas, provavelmente haverá mais processos bifurcados para lidar com a carga. O número de processos inativos também pode ser ajustado. Portanto, se o apache crescer para usar muita memória, você precisará fazer alguns ajustes.