Processo "httpd" di Apache, utilizzando tutta la memoria dei miei server


9

La mia piccola istanza ec2 con 1,7 GB di memoria, con Amazon AMI basato su CentOS, ha un problema con Apache che utilizza troppa memoria di quanto dovrebbe. Se dai un'occhiata allo screenshot, l'utilizzo della memoria sarà compreso tra il 90 e il 100% fino al riavvio del servizio httpd, da dove ricomincerà, aumentando fino al 90+%.

inserisci qui la descrizione dell'immagine

Gradirei davvero un po 'di assistenza su come individuare il problema. È forse un comportamento "normale" di apache, per utilizzare tutta la memoria disponibile? O c'è una possibile perdita che devo dare la caccia. Al momento sono un po 'perplesso su cosa potrebbe succedere.

Stiamo usando il prefork MPM di Apache e nessun sql o qualcosa di simile - solo apache. Il sito web è qui .


1
Non sembra usare alcuno Swap, quindi qual è il problema?
HTTP500,

Il fatto che usi così tanta memoria non dovrebbe essere un problema? Scusa la mia esperienza da principiante, suppongo che potrebbe essere un presupposto errato. Forse è un comportamento normale e che Apache è progettato per utilizzare tutta la memoria che può catturare, nonostante sia un sito Web a basso traffico?
Amivit

1
Ho notato che stai usando NewRelic, che può anche registrare il tempo trascorso in apache (potrebbe essere utile) se aggiungi questa linea alla tua configurazione httpd: RequestHeader set X-Request-Start "%t"se non l'hai già fatto. Questo apparirà come "Accodamento richieste" quando vai su App Server> Panoramica - potrebbe aiutarti ad arrivare in fondo al problema.
KM.

Risposte:


8

Come ha detto HTTP500, probabilmente non dovresti preoccuparti a meno che la macchina non stia effettivamente soffocando. Dai un'occhiata a Aiuto! Linux ha mangiato la mia RAM! . Non è una situazione abbastanza analoga, poiché hai processi piuttosto che buffer che utilizzano la RAM, ma non è troppo lontano: la RAM fisica della tua macchina è una risorsa da usare, sia con i buffer del kernel che con i processi di lavoro Apache di riserva per gestire prontamente l'arrivo richieste. Se non stai usando la RAM, hai pagato in eccesso per le dimensioni della tua scatola.

Ad ogni modo, se vuoi giocare con le impostazioni di MPM, la documentazione di Apache è http://httpd.apache.org/docs/current/mod/prefork.html

Puoi forse ridurre MinSpareServers, StartServers, ecc., Poiché hai dichiarato che il sito è a basso traffico. Avrai quindi più RAM libera che sarà utilizzata dai buffer del kernel per i loro scopi nefasti.


4

Linux che usa tutta la tua memoria è normale, la memoria che non è in uso altrimenti viene riutilizzata come cache del disco. vedi: linux ha mangiato il mio ariete

Puoi verificarlo guardando l'output di free -me aspettarti di vedere qualcosa del genere:

             total       used       free     shared    buffers     cached
Mem:          7889       6887        101          0        106       2307
-/+ buffers/cache:       5373       3416
Swap:         1903         17       1886

la riga +/- buffer / cache è quella desiderata. Aggiunge RAM memorizzata nella cache gratuitamente per darti un'idea migliore di quanta memoria è davvero disponibile. In questo caso, si desidera prestare attenzione al numero 3416, non 101.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.