2011-11-08 2 views
1

Supervisordを使用してPHPスクリプトの5つのインスタンスを実行しています。私のPHPスクリプトが行う処理を最大限にするには、5つのプロセスを実行することが最適な数です。 5歳以上5歳未満の場合は、結果が悪くなります。PHPスクリプト内でディスクI/Oをプロファイリングするにはどうすればよいですか?

私は既にxdebugwebgrindでPHPスクリプトのプロファイリングを行っています。

ディスクI/Oは、5つのプロセスを実行しているときにCPUとメモリが最大値にならないため、より多くの並列プロセスを実行できないと考えられます。 Amazon EC2インスタンスには4つの仮想コアがあり、MysqldもSupervisordも、いつでも50%以上のCPUを使用していません。

Linux Cent OSマシン上でディスクI/Oをプロファイルするにはどうすればよいですか(これは原因を聞いたようですか)。

他にどのようなボトルネックがありますか?

--SOLUTION--

私は非常に奥行きの情報で私を与えた任意のシンプルなソリューションを見つけることができませんでした。私は何を探しているのか正確には分かっていないので、この質問と回答があいまいであることをお詫びします。

+1

普通の 'iotop'をオプションとして使用しますか?これにより、どのプロセスがディスクにアクセスしているかをライブビューで確認できます。 – mario

+0

私はそれをインストールして試しました。良いデータのように見えますが、その情報をどうすればいいのかはっきりしていませんか?私のシステム制限がどのようなものか分かりますか? –

答えて

1

スクリプトが実行されている最中に、%util列に報告されている内容を確認します。iostat -c -n 1を参照してください。あなたの勘違いが正しければ、あなたのプロセスが実行されている間、%utilは100%に近いはずです。

このスクリプトはネットワーク経由でデータを取得する処理を行いますか?それもボトルネックになる可能性があります。

スクリプトが何をしているかについてもう少し詳しく知ることなく、それ以上のことは言えません。各プロセスは何をしていますか? 5が最適なプロセス数であるとはどのように判断しましたか?

+0

これはクロール/スクレイピングシステムです。各スクリプトは、ファイルテーブルから次のファイルを選択し、まだダウンロードされていない場合はダウンロードします。その後、それを掻き集め、リンクやメタ情報のような情報を保存します。私は、異なる数のプロセスを試し、処理されている1秒あたりのファイル数を追跡することによって最適なプロセス数を決定しました。 5つのプロセスを実行して、1秒あたり約2.8ファイルを最大にしました。私はiostatを試しました。私の%utilは決して10%を超えません。私は掘り続けるだろうと思う。また、iostat -x 1を使用しなければなりませんでした。 –

+0

'yum install sysstat' – mate64

関連する問題