web-dev-qa-db-ja.com

Linuxでphpのメモリ使用量を監視するにはどうすればよいですか?

私は過去にvalgrindsmassifツールを使用してメモリ使用量を監視しました。

Linuxのlighttpdサーバーで生成されたphpプロセスのメモリ使用量をキャプチャする方法を知っている人はいますか?

Valgrindは実行前のプロセスにアタッチできないことがわかりました(とにかく、事前にphpプロセスのPIDを知りません)

Lighttpd cgiモジュールによって生成されるPHPプロセスではなく、lighttpdのメモリ使用量のみが表示されます。

前もって感謝します。

17
DEzra

PHPには独自のメモリテスト関数があり、それがあなたに役立つかどうかはわかりませんが、ログに記録したいだけの場合は、次を使用できます: http://php.net/manual/en/function。 memory-get-peak-usage.php

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

'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のメモリ部分の信頼性が疑問視されていることは知っていますが、少なくとも使用法がどのようなものかがわかります。

8
Palm

上記の組み込みコマンドに加えて、スクリプトのプロファイリングに XHProf を使用し、Niceブラウザーアプリケーションでプロファイリング結果を表示するために XHGui を使用できます。メソッドがメモリをどのように使用するか、およびアプリケーション内のメモリ使用量のピークは何かに関する詳細情報を取得します。

4
Michael Lihs

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

スクリプト自体の中からスレッドが使用しているメモリの量を提供する必要があります。スクリプト(およびスレッド)はせいぜい数ミリ秒(ページの生成にかかる時間)しか存在しないため、PHPの外でそれをキャッチするのは難しいかもしれません。

  • 次のプラン

サーバーからより正確なデバッグ情報を取得することもできます。私はxdebugを個人的に使用しており、エラー/通知をスローすると、スタックトレース、時間、およびメモリ使用量が表示されます。スクリプトの最後に次の方法でトリガーできます。

trigger_error ('Finished', E_USER_NOTICE);

そしてそれはあなたに情報を与えるでしょう。データを取得するのがよくわかりません-必要に応じて、ドキュメントに関数が含まれている可能性があります-ぼんやりと見たのを覚えています。

1
Meep3D