2012-04-03 12 views
5

私はPHPでデーモンを書いています。私は大学でOSクラスを取っていませんでした。だから、デーモンがあまりにも多くのシステムリソースを消費していないことを確認するために必要なサーバー/その他の統計情報は何か、さらに多くのmysqlレコードがある場合には拡大縮小できます。基本的に、私のデーモンは、mysqlテーブル行の束を処理しています。例えば岩のデーモン

、私はデーモンが行の特定の数、およびそれが使用しているメモリの量を処理するために取っている時間の長さを表示する必要があります理解しています。しかし、メモリが漏れているかどうかはどうすれば判断できますか?また、私がデーモンを判断する他のシステムパラメータは何ですか?

+0

あなたが必要なもののいくつかは、ディスク上のログファイルにあなたのデーモン書き込みエントリを持つことによって得ることができます。たとえば、別の100行を処理するたびに、時間とメッセージを書き出すことができます。ログファイルを読むことによって、デーモン固有の情報が得られます。 Unixのコマンドラインツールを使用すると、メモリ、プロセッサ、およびディスクの使用状況を表示できます。 – Jazz

+0

CPU使用量/メモリ使用量/ iowaitが主な懸案事項になります。 – Corbin

+0

CPUに過負荷がある場合は、PHPで 'usleep'を使用して速度を落としてください。あなたはあなたのデーモンを&でバックグランドしていますか? – halfer

答えて

2

しかし、メモリがリークしているかどうかはどのように判断しますか?

ここでお聞きしている内容は、オペレーティングシステムとほとんど関係ありません。あなたは、メモリ使用を心配するのは当然です。この質問への適切な答えはここの記事の範囲を超えていますが、リファレンスカウントがメモリ管理にどのように作用するかを見て、PHPインストールで循環参照チェックが設定されていることを確認してください。プロットは、mysqlクライアントが実行中にPHPをブロックし、PHPのメモリ制限を無視することを発見したときに濃くなります。 - 結果セットが大きすぎる場合は、mysql_queryが返ってコードが終了するまで知りません。クエリー(またはPK選択)のLIMIT、およびプリファレンスの場合はウォッチドッグの下でデーモンを実行します。実稼働環境で使用するメモリ量よりも少ないメモリ量を使用してテストします。 PHPは、唯一それがメモリ不足だと思ったときに、ガベージコレクションを経由して自身へのより多くのメモリを利用可能にすることを開始します

注意。

ログファイルにたくさんのものを書いてください!

0

デーモンをどのように実行してLinux上で実行してから、予想していた行数(100k以上、実行に約30秒かかります)を処理しますか?どのように高速メモリ使用量が増加するのを見てください:それはあまりにも速く起こる小さなタスクで、あなたは実行中のプロセスが必要です。

次に、データベースの使用を終了するとすぐに、すべてのファイルと接続を解除してください($ objectOrString)。これが役立ちます。

また、このファイルが何をしているかによって、終了させ、cronジョブを使用してagianを起動し、PHPがガベージコレクションを実行できるようにすることができます。