欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

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

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

 发布于   学院君  23052 Views        

   

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

查看Ubuntu下Homestead版本        

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

Homestead 2.1.8上查看PHP版本信息        

我们使用 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 版本信息是否正确:

在Homestead查看PHP版本信息        

此时在浏览器中访问 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

  16 人觉得这篇文章很有用

学院君    

学院君 has written 1083 articles

Laravel学院院长,终身学习者

积分:137197 等级:P12 职业:手艺人 城市:杭州        

13 条回复

  1. 学院君 学院君 says:                    
    @ dfgf 正常
      回复                        
     感谢 (2)                    
  2. fingertips of happines fingertips of happines says:                    
    正常2核4G内存,落跑echo ‘hello world’。500的QPS正非常吗
      回复                        
     感谢 (0)                    
  3. fingertips of happines NoMooooreU says:                    
    @ Sun_翁航 哇靠 这不是兄弟连的邹老师
      回复                        
     感谢 (0)                    
  4. 卧龙大熊猫 卧龙大熊猫 says:                    
    学院君 php7是趋势
      回复                        
     感谢 (0)                    
  5. fingertips of happines 邹义良 says:                    
    @ Star 格式化为区分大小写即可
      回复                        
     感谢 (0)                    
  6. 学院君 学院君 says:                    
    学院君 Windows上使用Homestead性能确实不高
      回复                        
     感谢 (0)                    
  7. fingertips of happines 周杰伦新歌网 says:                    
    为啥我测试出来,Requests per second只有10多,同样也是PHP7,关闭了debug,没有做任何数据库操作,就打印一个字符串。                
      回复                        
     感谢 (0)                    
  8. 学院君 学院君 says:                    
    @ Star [囧] Ubuntu娱乐功能太弱 准备明年入手一台Mac
      回复                        
     感谢 (0)                    
  9. fingertips of happines 周旋江 says:                    
    Mac不分大小写,一个大小写坑死我了。ubuntu用起来也不错
      回复                        
     感谢 (0)                    
  10. 学院君 学院君 says:                    
    学院君 恩 单就开发而言 比Windows顺手多了
      回复                        
     感谢 (1)                    
       

登录后才能进行评论,立即登录?        

来自 https://laravelacademy.org/post/2398.html

普通分类: