0

我编写了以下脚本作为测试,它似乎一次只为两个客户端提供服务器:

<?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 服务器的结果:

灯结果

每个线程似乎同时正确started,由result(什么 php 回显)和每 2 个新线程确实需要额外的 2 秒(time)来完成。

每个脚本似乎需要 2 秒才能完成,然后提供以下 2 秒。这简直太愚蠢了,因为现在我有一台配备 12GB RAM 的四核 3.2 GHz 服务器无缘无故地让人们排队。值得一提的是,根据htop(系统监视器),apache2 只使用了两个 CPU 内核。

我在运行 lighttpd 和 php5-fpm 的 debian-squeeze 服务器上再次尝试了该脚本,这是一个完全不同的设置,但它给出了相同的结果。我不确定是编码不好还是其他什么..

我已经尝试过注释掉usleep()但得到了完全相同的结果,除了htop随后显示所有(两个)内核上的 CPU 使用率为 100% 的事实。使用 usleep1显示每个内核的使用率为 15%,使用 usleep 时每个内核的使用率500几乎没有达到 6%,这证实了服务器一次应该能够提供多于 2 个的页面。

谁能告诉我为什么会这样?

4

1 回答 1

1

你究竟是如何运行这些测试的?如果您的基准测试软件仅同时执行 2 个请求,那么您一次只能获得 2 个请求是有道理的。

您可以尝试ab也称为apache benchmark。您可以使用参数设置同时请求的数量。

于 2012-04-28T20:00:36.697 回答