最近又看了看php,做了几个ab的测试
By admin
最近折腾服务器部署,感觉rails占内存多有时候需要重启服务才能缓解一下卡的情况。
考虑之后的程序用什么来做,于是又搜了一下php,发现几年真是大发展php的明明空间大量应用,匿名函数和闭包竟然都支持了,laravel的几个命令行工具,简明语义的语法写法,composer这个类似bundle的好东西,使php本身的混乱程度大幅减少。
命名空间之前还听说的时候没见哪实际用过,现在看看一些新库的代码都已经用在生产上了,php还是很有搞头。
发现了phalcom这个php框架,竟然是用c写的来大幅提升系统性能,实在是令人意外。
于是用phalcom网站的测试方法测试了一下各个框架
ab和程序都是运行在同一主机,6g内存apu4核
测试了一下各个框架的ab -n 2000 -c 10 http://xxxx
rails用的是rails4.1,新建的一个临时程序,nginx + unicorn,就简单的能跑出hello world,在production模式下
Concurrency Level: 10
Time taken for tests: 1.461 seconds
Complete requests: 2000
Failed requests: 0
Total transferred: 888000 bytes
HTML transferred: 22000 bytes
Requests per second: 1369.20 [#/sec] (mean)
Time per request: 7.304 [ms] (mean)
Time per request: 0.730 [ms] (mean, across all concurrent requests)
Transfer rate: 593.68 [Kbytes/sec] received
beego的helloworld
Concurrency Level: 10
Time taken for tests: 0.124 seconds
Complete requests: 2000
Failed requests: 0
Total transferred: 342000 bytes
HTML transferred: 44000 bytes
Requests per second: 16116.17 [#/sec] (mean)
Time per request: 0.620 [ms] (mean)
Time per request: 0.062 [ms] (mean, across all concurrent requests)
Transfer rate: 2691.27 [Kbytes/sec] received
以下所有php都运行在nginx1.6 php5-fpm下,安装了php-apc
laravel的hello world
Concurrency Level: 10
Time taken for tests: 4.617 seconds
Complete requests: 2000
Failed requests: 0
Total transferred: 1200272 bytes
HTML transferred: 24000 bytes
Requests per second: 433.17 [#/sec] (mean)
Time per request: 23.086 [ms] (mean)
Time per request: 2.309 [ms] (mean, across all concurrent requests)
Transfer rate: 253.87 [Kbytes/sec] received
一开始还以为没加缓存,但是后来加上php-apc,重启php5-fpm也还是这个结果,相差不远,难道php还不如rails跑的快?而且和网上测试的那个2000多请求每秒的结果差的也太远了,这个问题先留待以后解决。
php单页面直接 echo “hello world”;
Concurrency Level: 10
Time taken for tests: 0.148 seconds
Complete requests: 2000
Failed requests: 0
Total transferred: 294000 bytes
HTML transferred: 22000 bytes
Requests per second: 13545.46 [#/sec] (mean)
Time per request: 0.738 [ms] (mean)
Time per request: 0.074 [ms] (mean, across all concurrent requests)
Transfer rate: 1944.51 [Kbytes/sec] received
这个结果看着还算是符合心理预期,能接近beego程序的2/3效率。
phalcon实在是php框架里最快的,就用初始教程里的例子,仅仅输出了hello world
Concurrency Level: 10
Time taken for tests: 0.334 seconds
Complete requests: 2000
Failed requests: 0
Total transferred: 294000 bytes
HTML transferred: 22000 bytes
Requests per second: 5988.35 [#/sec] (mean)
Time per request: 1.670 [ms] (mean)
Time per request: 0.167 [ms] (mean, across all concurrent requests)
Transfer rate: 859.66 [Kbytes/sec] received
不知道为什么我这里的phalcon比教程里的高好多而lavarel低了好多…
后来又跑了几次,差别不大,还是这一水平。
最后忘了对比纯nginx下的静态文件,补充上
Concurrency Level: 10
Time taken for tests: 0.089 seconds
Complete requests: 2000
Failed requests: 0
Total transferred: 482000 bytes
HTML transferred: 24000 bytes
Requests per second: 22486.56 [#/sec] (mean)
Time per request: 0.445 [ms] (mean)
Time per request: 0.044 [ms] (mean, across all concurrent requests)
Transfer rate: 5292.25 [Kbytes/sec] received
后来又看了看revel,revel run的结果还不如php,因为是开发模式吧,后来renvel build之后看了一下
Concurrency Level: 10
Time taken for tests: 0.189 seconds
Complete requests: 2000
Failed requests: 0
Total transferred: 790000 bytes
HTML transferred: 24000 bytes
Requests per second: 10596.92 [#/sec] (mean)
Time per request: 0.944 [ms] (mean)
Time per request: 0.094 [ms] (mean, across all concurrent requests)
Transfer rate: 4087.68 [Kbytes/sec] received
这个结果,是说明带帽子的跑不过长翅膀的么~