Tener algunos problemas con el uso de la memoria httpd
( Apache/2.2.29
).
Con el tiempo, el uso de memoria en los httpd
procesos aumenta progresivamente hasta que finalmente es del 100%.
La última vez que reinicié httpd
fue hace unas 24 horas. Salida de free -m
es:
[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 demostrar que es definitivamente httpd
, reinicié httpd
y corrí free -m
nuevamente:
[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
Entonces, reiniciar Apache requiere memoria libre de 239 Mb a 894 Mb, lo que parece un gran salto.
He estado revisando la lista de módulos de Apache actualmente habilitados (hay muchos) y deshabilitado / eliminado mod_wsgi
y mod_perl
(ninguno de los cuales son necesarios para este servidor, que ejecuta una aplicación web basada en PHP, específicamente Magento).
Basado en https://servercheck.in/blog/3-small-tweaks-make-apache-fly , ejecuté y obtuve ps aux | grep 'httpd' | awk '{print $6/1024 " MB";}'
el siguiente resultado:
[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
Al ejecutar la otra herramienta de diagnóstico sugerida para la MaxClients
cual se ps aux | grep 'httpd' | awk '{print $6/1024;}' | awk '{avg += ($1 - avg) / NR;} END {print avg " MB";}'
devuelve lo siguiente:
[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
instancia de Amazon AWS ) tiene 1.7 Gb
RAM. Asi que, por lo tanto:
¿Alguna otra sugerencia / sugerencia sobre cómo ajustar mejor la httpd
configuración o cómo diagnosticar qué podría estar causando esto?
nginx
así que tal vez es hora de que lo intentemos, pero honestamente, he estado usando Apache durante años y nunca tuve ningún problema importante. Sin embargo, Magento realmente mastica la memoria.
grep httpd
proceso (al menos para mí). Para solucionarlo, recomendaría excluir esa línea del cálculo de esta manera:ps aux | grep 'httpd' | grep -v grep | awk '{print $6/1024;}' | awk '{avg += ($1 - avg) / NR;} END {print avg " MB";}'
-/+ buffers/cache
línea; Sin embargo, en este caso el cambio es comparable. Dependiendo de cómo se haya ajustado Apache, puede comenzar con solo un par de procesos listos para manejar solicitudes; Después de un período de muchas solicitudes concurrentes, probablemente habrá más procesos bifurcados para manejar la carga. El número de procesos inactivos también se puede ajustar. Entonces, si apache crece para usar demasiada memoria, necesita hacer algunos ajustes.