2009-07-02 19 views
14

Ho usato lo strumento valgrinds massif per monitorare l'utilizzo della memoria in passato.Come posso monitorare l'utilizzo della memoria di php in linux?

Qualcuno sa come acquisire l'utilizzo della memoria dei processi di php che vengono generati su un server Linuxt Lightdp?

ho trovato che Valgrind non può connettersi a un processo precorrendo (e non vorrei conoscere il PID del processo php prima di mano in ogni caso)

vedo solo l'utilizzo della memoria di lighttpd, non i processi PHP che vengono spawn dal modulo cgi lighttpd.

Grazie in anticipo.

risposta

13

PHP ha le sue funzioni di test di memoria, non so se questo è alcuna utilità per voi, ma se si desidera solo per registrare che si può usare: http://php.net/manual/en/function.memory-get-peak-usage.php

echo "Using ", memory_get_peak_usage(1), " bytes of ram."; 
+1

E 'questo l'uso della memoria per solo lo script o include anche l'utilizzo della memoria del processo php, inoltre sarà difficile ottenere l'utilizzo massimo in qualsiasi momento se sono in esecuzione più script. – DEzra

+3

aggiunta del valore booleano true come primo parametro in memory_get_peak_usage (true) restituirà anche la memoria per il processo PHP – scotts

1

http://php.net/manual/en/function.memory-get-usage.php

dovrebbe darvi la quantità di memoria che il thread sta usando all'interno dello script stesso. Penso che lo script (e il thread) esiste solo per pochi millisecondi - solo il tempo necessario per generare la pagina - rilevarlo al di fuori di PHP potrebbe essere difficile.

  • Plan B

È inoltre possibile ottenere informazioni di debug dal server che può essere più preciso - io uso xdebug personalmente, e quando si genera un errore/notato ti dà una traccia dello stack, tempo e l'uso della memoria. Puoi attivarlo alla fine dello script con:

trigger_error ('Finished', E_USER_NOTICE); 

E ti darà le informazioni. Non sono sicuro di prendere i dati - se è necessario, potrebbe esserci una funzione nei documenti su come - ricordo vagamente di averne visto uno.

+0

ciao, sì, ho provato sia memory_get_usage che memory_get_peak_usage su uno script che ha creato una stringa e loop 50 volte aumentando la stringa ogni volta.Sembra che memory_get_usage() restituisca sempre 2mb (in byte). Che mi sembra sbagliato (a meno che php non allochi 2mb per tutti gli script ?? – DEzra

+1

Ho aggiornato la mia risposta in qualche modo - xdebug può essere preso/guardato da http://www.xdebug.org/ – Meep3D

6

Non puoi usare lo strumento 'ps'?

$ ps -F -C php-cgi 

UID  PID PPID C SZ RSS PSR STIME TTY   TIME CMD 
http  10794 10786 0 4073 228 0 Jun09 ?  00:00:00 /usr/bin/php-cgi 
http  10795 10794 0 4073 28 0 Jun09 ?  00:00:00 /usr/bin/php-cgi 
http  10796 10786 0 4073 228 0 Jun09 ?  00:00:00 /usr/bin/php-cgi 
http  10797 10796 0 4613 3544 0 Jun09 ?  00:00:00 /usr/bin/php-cgi 
... 

RSS è la dimensione Real-memoria (set residente) in kilobyte del processo.

Per riassumere il tutto in bash (un po 'arrugginito dispiaciuto)

#!/bin/bash 

total=0 
for i in `ps -C php-cgi -o rss=` 
do 
    total=$(($total + $i)) 
done 
echo "Memory usage: $total kb" 

# Output: Memory usage: 4540 kb 

uno di linea:

total=0; for i in `ps -C php-cgi -o rss=`; do total=$(($total+$i)); done; echo "Memory usage: $total kb"; 

so l'affidabilità della parte di memoria in ps è messa in discussione, ma almeno ti dà un'idea di come sia l'uso.

+0

Questo è un bene se usi php-cgi, se stai usando mod_php sei sfortunato e probabilmente vuoi andare con la prima risposta –

4

Oltre ai comandi di compilazione mostrati sopra, è possibile utilizzare XHProf per la creazione di profili degli script e XHGui per la visualizzazione dei risultati di profilazione in una applicazione browser piacevole. Ottieni informazioni approfondite su come i tuoi metodi usano la memoria e quali sono i picchi di utilizzo della memoria all'interno della tua applicazione.

+2

Puoi anche trovare XHProf su github all'indirizzo https://github.com/facebook/xhprof/ –

+0

Grazie, mi piace sempre sentire nuovi strumenti per la creazione di profili. Riceverò sicuramente XHProf e XHGUI – DEzra

Problemi correlati