我已經使用valgrinds地塊工具來監視過去的內存使用情況。如何監控linux的內存使用情況?
有誰知道如何捕獲在linux lighttpd服務器上產生的PHP進程的內存使用?
我發現,Valgrind的無法連接到一個prerunning過程(我不知道前手PHP進程的PID反正)
我只看到的lighttpd的內存使用情況,而不是產卵的PHP進程通過lighttpd cgi模塊。
在此先感謝。
我已經使用valgrinds地塊工具來監視過去的內存使用情況。如何監控linux的內存使用情況?
有誰知道如何捕獲在linux lighttpd服務器上產生的PHP進程的內存使用?
我發現,Valgrind的無法連接到一個prerunning過程(我不知道前手PHP進程的PID反正)
我只看到的lighttpd的內存使用情況,而不是產卵的PHP進程通過lighttpd cgi模塊。
在此先感謝。
PHP有它自己的內存測試功能,我不知道這是任何對你有用,但如果你只是想記錄它,你可以使用: http://php.net/manual/en/function.memory-get-peak-usage.php
echo "Using ", memory_get_peak_usage(1), " bytes of ram.";
http://php.net/manual/en/function.memory-get-usage.php
應該給你的線程從腳本本身中使用的內存量。我認爲,因爲腳本(和線程)最多隻存在幾毫秒 - 只是生成頁面所需的時間 - 在PHP之外捕獲它可能很困難。
你也可以調試從服務器,可能是更準確的信息 - 我用Xdebug的個人,當它拋出一個錯誤/發現它給你一個堆棧跟蹤,時間和內存使用情況。您可以在腳本結尾觸發它:
trigger_error ('Finished', E_USER_NOTICE);
它會給你信息。我不確定如何捕捉數據 - 如果您需要,可能會在文檔中提供關於如何的功能 - 我隱約記得看到一個。
不能使用'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是實數內存(駐留集)大小(以千字節爲單位的進程)。
要在bash(有點生疏抱歉)總括起來
#!/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
一個內膽:
total=0; for i in `ps -C php-cgi -o rss=`; do total=$(($total+$i)); done; echo "Memory usage: $total kb";
我知道內存部分的可靠性PS的質疑,但至少它可以讓你瞭解使用情況。
獲得/查看這是內存使用情況只是腳本,還是包括php進程內存的使用?另外,如果多個腳本運行,在任何時候都很難獲得高峯使用率。 – DEzra 2009-07-02 08:11:38
將布爾值true作爲memory_get_peak_usage中的第一個參數添加(true)也會返回PHP進程的內存 – scotts 2010-03-02 00:11:36