2009-07-02 16 views
14

私はvalgrinds massifツールを使用して過去のメモリ使用量を監視しています。LinuxでPHPのメモリ使用量を監視するにはどうしたらいいですか?

Linuxのlighttpdサーバで生成されたPHPプロセスのメモリ使用量をどのように取得するのか知っていますか?

私はValgrindのはprerunningプロセスにアタッチすることはできません(と私はとにかく手の前にPHPのプロセスのPIDを知ることはできません)

私は、生成されたされていないPHPのプロセスをlighttpdののメモリ使用量を確認することを見出しましたlighttpd cgiモジュールによって。

ありがとうございます。

答えて

13

それはあなたにどんな使用だ場合、PHPは、それが自分のメモリ・テスト機能のしている、私は知りませんが、あなたはそれを記録したい場合は、使用できます。 http://php.net/manual/en/function.memory-get-peak-usage.php

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

これは、複数のスクリプトが実行されている場合、ある時点でピーク時の使用量を得ることは難しいでしょう – DEzra

+3

memory_get_peak_usageの最初のパラメータとして真を追加します。 (true)は、PHPプロセス用のメモリも返します。 – scotts

1

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

はあなたのスレッドはスクリプト自体の中から使用しているメモリの量を与える必要があります。私は、スクリプト(とスレッド)はたいてい数ミリ秒間しか存在しないため、ページを生成するのにちょうど時間がかかり、PHPの外でそれをキャッチするのは難しいかもしれないと思います。

  • プランB

また、より正確であり、サーバからのデバッグ情報を取得することができます - 私は個人的にxdebugのを使用し、それがエラーをスローしたときに/それはあなたのスタックトレースを与える気づく、時間をおよびメモリ使用量。スクリプトの最後に次のように入力して起動できます。

trigger_error ('Finished', E_USER_NOTICE); 

これで情報が表示されます。私はデータをキャッチしているかどうかはわかりません。もし必要ならば、どのようにドキュメントの機能があるかもしれません - 私は漠然と1つを見て覚えています。

+0

こんにちは、はい、文字列を作成したスクリプトでmemory_get_usageとmemory_get_peak_usageの両方を試してみましたが、毎回文字列を50回繰り返しました。memory_get_usage()は常に2MBを返します(バイト単位)。私には間違っているようです(php preがすべてのスクリプトに2MBを割り当てるのでない限り) – DEzra

+1

私の答えは多少更新されています - xdebugはhttp://www.xdebug.org/から入手できます/見てください – Meep3D

6

あなたが使用することはできません'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におけるメモリ部の信頼性が疑問視されて知っているが、少なくとも、それはどのような使用法のようなアイデアを提供します。

+0

これはphp-cgiを使用している場合に便利です。mod_phpを使用している場合は、運が悪く、おそらく最初の回答にしたいと考えています。 –

4

上記のビルドインコマンドの他に、XHProfをスクリプトのプロファイリングに使用し、XHGuiを使用して、素晴らしいブラウザーアプリケーションでプロファイリング結果を表示することができます。メソッドでメモリをどのように使用するか、アプリケーション内のメモリ使用量のピークについては、詳細な情報が得られます。

+2

また、github上でXHProfを見つけることもできます:https://github.com/facebook/xhprof/ –

+0

ありがとう、私はいつもプロファイリングのための新しいツールについて聞きたいと思います.XHProfとXHGUIを徹底的にチェックします – DEzra

関連する問題