0

テストとして次のスクリプトを作成しましたが、一度に2つのクライアントに対してのみサーバーであるように見えます。

<?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()); 
?>

LAMPサーバーの結果:

lamp_results

started各スレッドは同時に正しく動作しているように見えます。これは、 result(phpがエコーバックしたもの)と2つの新しいスレッドごとに、実際に終了するのにさらに2秒(time)かかることで確認されています。

各スクリプトの終了には2秒かかるようです。その後、次の2つが提供されます。これはばかげています。理由もなく、12GBのRAMを搭載したクアッドコア3.2GHzサーバーが人々をキューに入れているからです。(システムモニター)によるとhtop、apache2によって使用されているCPUコアは2つだけです。

lighttpdとphp5-fpmを実行しているdebian-squeezeサーバーでスクリプトを再試行しましたが、これはまったく異なるセットアップですが、同じ結果が得られました。コーディングが悪いのか、それとも他の何かなのかわかりません。

私はすでにコメントアウトしようとしましたが、すべての(両方の)コアでCPU使用率が100%でusleep()あるという事実を除いて、まったく同じ結果が得られます。htopusleepをオンに1すると、各コアで15%の使用率が示され、usleepをオンにすると、500それぞれ6%に達することはほとんどなく、サーバーが一度に2ページよりもはるかに多くのページを提供できる必要があることが確認されます。

なぜこれが起こるのか誰か教えてもらえますか?

4

1 に答える 1

1

これらのテストをどの程度正確に実行していますか?ベンチマークソフトウェアが同時に2つのリクエストしか実行しない場合、一度に2つしか取得できないのは理にかなっています。

apacheベンチマークとも呼ばれるabを試すことができます。パラメータを使用して、同時リクエストの量を設定できます。

于 2012-04-28T20:00:36.697 に答える