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.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top