我编写了以下脚本作为测试,它似乎一次只为两个客户端提供服务器:
<?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 个的页面。
谁能告诉我为什么会这样?