【发布时间】:2011-10-02 17:27:40
【问题描述】:
最近我使用 Apache Benchmark (ab) 对 PHP 的 HipHop 进行了基准测试。
我预计 PHP 的 HipHop 结果比普通的 apache2 Web 服务器运行得更快,但结果却相反。
我用这个脚本来测试服务器,
<?php
$i=0;
while($i < 1000000){
echo 'Welcome to HipHop for PHP<br />';
$i++;
}
?>
我使用这个 ab 命令进行基准测试:
ab -n 500 -c 5 [URL]
我用这个命令编译:
hphp/hphp hiphop1.php -k 1 -l 3
apache2 服务器的基准测试结果:
kiddo@kiddo-VirtualBox:~/dev/hiphop-php/doc$ ab -n 500 -c 5 http://localhost/hiphop1.php
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Finished 500 requests
Server Software: Apache/2.2.16
Server Hostname: localhost
Server Port: 80
Document Path: /hiphop1.php
Document Length: 31000000 bytes
Concurrency Level: 5
Time taken for tests: 71.024 seconds
Complete requests: 500
Failed requests: 0
Write errors: 0
Total transferred: 15500095500 bytes
HTML transferred: 15500000000 bytes
Requests per second: 7.04 [#/sec] (mean)
Time per request: 710.240 [ms] (mean)
Time per request: 142.048 [ms] (mean, across all concurrent requests)
Transfer rate: 213122.37 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.9 0 19
Processing: 505 708 61.1 694 960
Waiting: 0 0 3.3 0 67
Total: 505 708 61.1 695 960
Percentage of the requests served within a certain time (ms)
50% 695
66% 714
75% 729
80% 736
90% 781
95% 857
98% 898
99% 938
100% 960 (longest request)
以及 PHP 的 HipHop 基准:
kiddo@kiddo-VirtualBox:~/dev/hiphop-php/doc$ ab -n 500 -c 5 http://localhost:8080/hiphop1.php
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Finished 500 requests
Server Software:
Server Hostname: localhost
Server Port: 8080
Document Path: /hiphop1.php
Document Length: 31000000 bytes
Concurrency Level: 5
Time taken for tests: 294.546 seconds
Complete requests: 500
Failed requests: 0
Write errors: 0
Total transferred: 15500052500 bytes
HTML transferred: 15500000000 bytes
Requests per second: 1.70 [#/sec] (mean)
Time per request: 2945.455 [ms] (mean)
Time per request: 589.091 [ms] (mean, across all concurrent requests)
Transfer rate: 51390.26 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 1.6 0 20
Processing: 1515 2941 579.7 2919 4734
Waiting: 1452 2626 532.5 2609 4135
Total: 1515 2941 579.7 2919 4734
Percentage of the requests served within a certain time (ms)
50% 2919
66% 3147
75% 3334
80% 3448
90% 3704
95% 3937
98% 4223
99% 4394
100% 4734 (longest request)
问题是,为什么 HipHop 在我的基准测试中运行速度较慢?
脚本测试有什么问题吗?
【问题讨论】:
-
服务器(尤其是输出缓冲区)的配置可能不同。如果缓冲区太小,则需要更多的输入/输出操作。
-
您的测试代码与典型的 Web 应用工作负载相差甚远。现代 Web 应用程序将进行大量对象实例化、数据库 IO、用户输入处理等。您正在测试的所有代码都是循环和文本输出。完全有可能嘻哈在典型的实际使用情况下更快,但在一两个非常特定的情况下更慢。
-
对 Web 应用程序进行基准测试有什么建议吗?特别是 PHP 的 HipHop?我不知道如何为基准 Web 服务器制作测试用例
-
我通过使用 php 官方开发库中的 bench.php 得到了我想要的结果。我使用 ab 进行基准测试,但我只得到执行时间。如何获取 cpu 和内存使用情况?
-
您可以通过脚本获取 CPU 负载