转载

PHP 7.0 与 PHP 5.6 下 Laravel 博客应用性能对比分析

目前我安装的Homestead 虚拟版本是2.1.8:

PHP 7.0 与 PHP 5.6 下 Laravel 博客应用性能对比分析

该版本 Homestead 上预装的 PHP 版本是 5.6.15:

PHP 7.0 与 PHP 5.6 下 Laravel 博客应用性能对比分析

我们使用 ab 命令(Apache 提供的性能测试工具)在该版本中测试Laravel 应用(以目前正在讲的使用Laravel开发的博客应用为例)性能,我们模拟 10000 次请求,100 个并发进行压力测试:

ab -n 10000 -c 100 http://blog.app/

运行结果如下:

This is ApacheBench, Version 2.3 <$Revision: 1638069 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/  Benchmarking blog.app (be patient) Completed 1000 requests Completed 2000 requests Completed 3000 requests Completed 4000 requests Completed 5000 requests Completed 6000 requests Completed 7000 requests Completed 8000 requests Completed 9000 requests Completed 10000 requests Finished 10000 requests Server Software: nginx/1.8.0 Server Hostname: blog.app Server Port: 80  Document Path: / Document Length: 324 bytes  Concurrency Level: 100 Time taken for tests: 69.354 seconds Complete requests: 10000 Failed requests: 0 Total transferred: 19851388 bytes HTML transferred: 10230000 bytes Requests per second: 144.19 [#/sec] (mean) Time per request: 693.545 [ms] (mean) Time per request: 6.935 [ms] (mean, across all concurrent requests) Transfer rate: 279.52 [Kbytes/sec] received  Connection Times (ms)                   min  mean[+/-sd]  median  max Connect:       0       0     0.2                 0      3 Processing: 17    684   319.1           588   2720 Waiting:      17     684   319.1           588   2720 Total:          20     684   319.1           588   2720  Percentage of the requests served within a certain time (ms)  50%      588  66%      695  75%      842  80%      933  90%    1155  95%    1321  98%    1545  99%    1813  100%  2720 (longest request)

这里我们要关注的是红色加粗的文字,即每秒处理请求数,这是衡量系统性能的关键指标。根据系统及硬件配置的差异,数据会有些出入。

现在我们按照 Laravel Homestead 现在支持 PHP 7 了 这一节所述将 Homestead 中的 PHP升级到 7.0 版本。

使用 vagrant ssh 登录到新添加的 homestead-7 虚拟机,查看 PHP 版本信息是否正确:

PHP 7.0 与 PHP 5.6 下 Laravel 博客应用性能对比分析

此时在浏览器中访问 http://blog.app 会报错,因为新安装的 Homestead 数据库数据为空,需要登录到虚拟机运行如下命令运行迁移并填充数据:

php artisan migrate  php artisan db:seed

再次访问就OK了,好了我们继续使用同样的ab命令进行压力测试:

ab -n 10000 -c 100 http://blog.app/

运行结果如下:

This is ApacheBench, Version 2.3 <$Revision: 1638069 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/  Benchmarking blog.app (be patient) Completed 1000 requests Completed 2000 requests Completed 3000 requests Completed 4000 requests Completed 5000 requests Completed 6000 requests Completed 7000 requests Completed 8000 requests Completed 9000 requests Completed 10000 requests Finished 10000 requests Server Software: nginx/1.8.0 Server Hostname: blog.app Server Port: 80
Document Path: / Document Length: 324 bytes  Concurrency Level: 100 Time taken for tests: 45.032 seconds Complete requests: 10000 Failed requests: 0 Total transferred: 20101202 bytes HTML transferred: 10230000 bytes Requests per second: 222.06 [#/sec] (mean) Time per request: 450.319 [ms] (mean) Time per request: 4.503 [ms] (mean, across all concurrent requests) Transfer rate: 435.91 [Kbytes/sec] received  Connection Times (ms)                   min  mean[+/-sd]  median   max Connect:       0       0     0.2                 0       4 Processing: 11    443   252.8           379   1978 Waiting:      11     443   252.8           379   1978 Total:          15     443   252.8           379   1978
Percentage of the requests served within a certain time (ms)  50%      379  66%      517  75%      590  80%      631  90%      795  95%      938  98%    1060  99%    1229  100%  1978 (longest request)

经过对比,同一个 Laravel 应用在PHP 7.0 下的性能比 PHP 5.6 提高了54%,这是一个很显著的性能提升,当然环境不同数据会有所出入,而且还有更大的提升空间,更多关于 PHP 7.0 的性能调优,可参考 Laruence 的这篇文章: 让PHP7达到最高性能的几个Tips 。

正文到此结束
Loading...