0

いくつかの CLI デーモンに PHP + Zend Framework を使用しています。それらはかなりのメモリを占有します。Zend Framework の部分が原因である可能性があると想定していますが、メモリが浪費されている場所を示す事実が必要です。

メモリが無駄になっている場所を特定するにはどうすればよいですか? これは単なる試行錯誤のプロセスですか? また、ガベージ コレクションを改善するにはどうすればよいですか (これも大きなメモリ使用量を引き起こす問題である可能性があるという記事をいくつか読みました)。

4

3 に答える 3

1

XDebugのプロファイラーを使用することをお勧めします。これにより、必要な答えが得られるはずです。

プロファイラーは cachegrind ファイルを生成します。これを KCacheGrind などのツールで表示して、プログラムのボトルネックとメモリ使用量がどこにあるかを確認できます。

XDebug のプロファイラー ページで詳細を確認してください: http://www.xdebug.org/docs/profiler

于 2011-02-03T11:38:55.317 に答える
1

IME、PHP はコードの解析に大量のメモリを使用します。使用しているすべてのライブラリを明示的に含める以外に何もしない単純なスクリプトを作成してみて、開始/終了時のメモリ使用量を追跡してください。これを実際のスクリプトで見たものと比較してください。

Htbaa は部分的に正しいです。最近のバージョンの PHP はよりスマートなガベージ コレクターを備えていますが、以前のバージョンではまだガベージ コレクションが行われています。新しい gc が行うすべてのケースを見つけることはできません。しかし、そのガベージ コレクションのため、安定した入力負荷が与えられた場合、通常、メモリ使用量に鋸歯状のものが表示されます。

しかし、良いガベージ コレクションを行っても悪いコードは修正されません。スタックにない変数に何かを格納した場合は、使い終わったら設定を解除する必要があります。

于 2011-02-03T15:08:51.153 に答える
0

どのバージョンの PHP を実行していますか? PHP >=5.3 のみが適切なガベージ コレクタを備えています。PHP <=5.2 を使用してデーモン スクリプトを実行すると、すべてのメモリが消費される可能性があります。

于 2011-02-03T14:30:59.890 に答える