Come faccio a monitorare l'utilizzo della memoria del php in linux?
Domanda
Ho usato valgrinds strumento massiccio per monitorare l'utilizzo della memoria del passato.
Qualcuno sa come catturare l'utilizzo della memoria dei processi php che vengono spawn su un server Linux lighttpd?
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 di PHP che vengono generate da modulo cgi lighttpd.
Grazie in anticipo.
Soluzione
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.";
Altri suggerimenti
Non potete utilizzare 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 sorry)
#!/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
Una nave di linea:
total=0; for i in `ps -C php-cgi -o rss=`; do total=$(($total+$i)); done; echo "Memory usage: $total kb";
So che l'affidabilità della parte di memoria in ps è in discussione, ma almeno ti dà un'idea di ciò che l'utilizzo è simile.
Oltre ai comandi build-in indicato in precedenza, è possibile utilizzare XHProf per profilare i vostri script e XHGui per mostrare profilazione risultati in un applicazione browser bello. È possibile ottenere informazioni approfondite su come i vostri metodi utilizzano la memoria e quali sono i picchi di utilizzo della memoria all'interno della vostra applicazione.
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. Credo perché il copione (e filo) esiste solo per pochi millisecondi al massimo - solo il tempo necessario per generare la pagina - la cattura di fuori 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 / notare ti dà una traccia dello stack, il tempo e l'utilizzo della memoria. È possibile attivare alla fine dello script con:
trigger_error ('Finished', E_USER_NOTICE);
E ti darà le informazioni. Non sono sicuro che a catturare i dati - se è necessario ci può essere una funzione nella documentazione su come -. Ricordo vagamente vedere uno