一度に2つのクライアントへのサーバーであること、それは一度に2つのクライアントにサーバーをされています表示されます:LAMPサーバーのPHPスクリプトは、私がテストとして次のスクリプトを書いた
<?php
$time = time();
$timediff = 0;
do
{
$timediff = time() - $time;
usleep(1);
}while($timediff <= 1);
echo date('G:i:s', $time)." - ".date('G:i:s', time());
?>
結果:
各スレッドが正しくstarted
result
によって確認され、同時に、(バックecho'd何PHP)と実際に余分な2秒を取るためにあらゆる2つの新しいスレッド(time
)であると思われます終わる。
各スクリプトが終了するまでに2秒かかっているようです。その後、次の2つが表示されます。これは単なる愚かなことです。なぜなら、12GバイトのRAMを搭載したクアッドコア3.2GHzサーバーがあり、正当な理由がないからです。 htop
(システムモニタ)によると、apache2は2つのCPUコアしか使用していないことに言及する価値があります。
私は、lighttpdとphp5-fpmを実行しているdebian-squeezeサーバでスクリプトを再試行しましたが、全く異なる設定ですが、同じ結果が得られました。
私は既にusleep()
をコメントアウトしましたが、htop
が100%のCPU使用率を示している点を除いて全く同じ結果が得られました(両方)コア。 1
でusleepを実行すると、各コアに15%の使用率が表示され、500
でusleepを使用すると、それぞれ6%に達することはほとんどなく、サーバが2つ以上のページを一度に処理できることが確認されます。
これはなぜ起こるのですか?
私はよく分かりませんが、使用しているサーバーではなくサーバーの容量をテストするために、広く使用されているベンチマークツール([ApacheBench](https://en.wikipedia.org/wiki/ApacheBench)など)を試してみてください。サーバーがデフォルトで2つのクライアントを一度に処理する理由はありません。 – drew010