Problemi con l'utilizzo della memoria httpd
( Apache/2.2.29
).
Nel tempo, l'utilizzo della memoria nei httpd
processi aumenta fino a raggiungere il 100%.
L'ultima volta che ho riavviato è httpd
stato circa 24 ore fa. L'output da 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
Per dimostrare che è sicuramente httpd
, ho riavviato httpd
ed eseguito di free -m
nuovo:
[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
Quindi, il riavvio di Apache richiede memoria libera da 239 Mb a 894 Mb, il che sembra un grande salto.
Ho esaminato l'elenco dei moduli Apache attualmente abilitati (ce ne sono molti) e disabilitati / rimossi mod_wsgi
e mod_perl
(nessuno dei quali è richiesto per questo server, che esegue un'applicazione Web basata su PHP - Magento, in particolare).
Basato su https://servercheck.in/blog/3-small-tweaks-make-apache-fly , ho eseguito ps aux | grep 'httpd' | awk '{print $6/1024 " MB";}'
e ho ottenuto il seguente output:
[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
L'esecuzione dell'altro strumento di diagnosi suggerito per il MaxClients
quale viene ps aux | grep 'httpd' | awk '{print $6/1024;}' | awk '{avg += ($1 - avg) / NR;} END {print avg " MB";}'
restituito quanto segue:
[root@www ~]# ps aux | grep 'httpd' | awk '{print $6/1024;}' | awk '{avg += ($1 - avg) / NR;} END {print avg " MB";}'
110.212 MB
Questo server ( m1.small
istanza Amazon AWS ) dispone 1.7 Gb
di RAM. Perciò:
Ulteriori suggerimenti / suggerimenti su come modificare al meglio le httpd
impostazioni o su come diagnosticare cosa potrebbe causare esattamente questo?
nginx
quindi forse è il momento di provarlo, ma onestamente, utilizzo Apache da anni e non ho mai avuto grossi problemi. Magento mastica davvero la memoria però.
grep httpd
(almeno per me). Per risolvere il problema, consiglierei di escludere quella riga dal calcolo in questo modo:ps aux | grep 'httpd' | grep -v grep | awk '{print $6/1024;}' | awk '{avg += ($1 - avg) / NR;} END {print avg " MB";}'
-/+ buffers/cache
linea; tuttavia in questo caso la modifica è comparabile. A seconda di come è stato messo a punto apache, potrebbe iniziare con solo un paio di processi pronti per la gestione delle richieste; dopo un periodo di molte richieste simultanee ci saranno probabilmente più processi biforcati per gestire il carico. È anche possibile regolare il numero di processi inattivi. Quindi, se apache cresce per usare troppa memoria, è necessario eseguire alcune regolazioni.