La mia configuration di Apache2 è perdita di memory?

Recentemente ho notato che il mio apache utilizza quantità assurde di memory sul mio server Linode (80 MB più di quanto era usato) e riavviare apache2 sembra risolvere il problema.

Ho eseguito SVN su apache, così come mysql e tomcat sul server, ma né sembrano essere il problema. Come faccio a eseguire il debug where apache sta perdendo la memory? A parte SVN, è davvero solo un blog di wordpress, quindi non vedo where la perdita potrebbe verificarsi. Ho usato un'installazione predefinita dai repository ubuntu 8.04.

  • Pagine di errore del passeggero del cliente
  • Come faccio a scoprire chi sta facendo molte richieste al server?
  • Come faccio a impedire a Apache di pubblicare un sito HTTPS quando non corrisponde al nome VirtualHost richiesto?
  • Cambiare l'impostazione predefinita dall'indirizzo da Postfix da dati www a qualcos'altro
  • 80% di utilizzo della memory sul server- è questo caching giusto?
  • Chi o cosa sta inviando spam dal mio server (CentOS / Apache / suPHP)
  • Qualsiasi aiuto?

  • Come gzip i log creati da rotatelogs
  • Elenco all'interno o all'esterno di VirtualHosts?
  • Tcpdump su più interfacce
  • Django: Nginx con WSGI o Apache con WSGI
  • Apache Header Module caricato ma non può impostare le intestazioni in htaccess
  • Apache improvvisamente molto lento su http e più velocemente su https
  • One Solution collect form web for “La mia configuration di Apache2 è perdita di memory?”

    Una sfumatura della gestione della memory di Apache significa sempre sembrare di mangiare sempre più il valore VIRT della memory è spesso elevato quando si utilizza prefork.c (che presumo che tu sia):

      PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 10385 apache 15 0 376m 48m 3932 R 20.3 1.2 0:01.34 httpd 10423 apache 16 0 376m 46m 4576 S 15.0 1.2 0:01.09 httpd 10153 apache 15 0 337m 61m 4672 S 11.6 1.6 0:03.94 httpd 10419 apache 15 0 383m 54m 4696 S 11.6 1.4 0:01.00 httpd 

    Il valore che si desidera monitorare è RES – questa è la dimensione della più grande quantità di memory che il thread figlio ha consumato (nel mio caso, PHP viene eseguito come parte di quel thread, quindi il "bloat" come librerie e dati vengono caricati) . Il thread non rilascia la memory assegnata, tuttavia quando il process apache uccide il thread dopo i suoi max-richieste come per

     <IfModule prefork.c> MaxRequestsPerChild 1000 

    il thread tornerà al suo consumo della memory nativa. Questo è lo stesso effetto del riavvio di apache, anche se un riavvio comport una perdita temporanea di servizio (nulla sta ascoltando sulla port 80) mentre MaxRequestsPerChild controlla solo i thread di figlio, assicurando che esista ancora un servizio di ascolto sulla port 80 (ovunque sia configurato ascolta).

    Per abbassare l'utilizzo totale della memory di apache, accertati di caricare solo i moduli apache necessari e di monitorare i thread di apache durante l'esecuzione di uno script PHP molto grande ( ini_set('memory_limit', '128M'); e caricare ricorsivamente i dati in un arrays – che dovrebbe farlo). Quindi, durante l'utilizzo del mondo reale, abbassi il valore MaxRequestsPerChild finché non vedi il tuo apache RES a un livello ragionevole. Non dimentichiamo che questo solo abbassa la possibilità di un thread per bambini che gestisce un grande script all'inizio della sua "vita" (più bambini che fanno questo, più utilizza la memory totale apache)

    Ecco alcuni utili articoli di tuning dei parametri:

    • Tuning su stack LAMP su OnLamp
    • Utilizzo di memory bassi apache
    • Prestazioni Apache max
    • Suggerimenti sull'utilizzo della memory del server
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.