设为首页 收藏本站
查看: 1502|回复: 0

[经验分享] php 性能优化 笔记

[复制链接]

尚未签到

发表于 2018-12-18 11:25:09 | 显示全部楼层 |阅读模式
  1 php性能优化初探
  我已经遇到性能问题了!
  

  可能用到性能问题
  1 php语法使用不当
  2 用了其不擅长的事情
  3 连接了不给力的服务
  4 php自身的短板
  5 我也不知道的问题
  有靠谱的解决办法了吗????
  

  2 php性能问题简析
  占比例小于 50%,不要局限优化php。
  解决方向:
  1 php语言级的性能优化。 就是先查代码
  2 周边问题优化,周边服务的优化。
  3 php语言自身分析、优化,底层的C语言的优化。
  3 php性能优化
  压力测试工具简介
  Apache Benchmark(ab)
  简介:ab是由apache提供的压力测试软件,安装apache服务器时会自带该压缩软件
  如何使用:
  ./ab -n100 -c10 http://www.baidu.com/   这样才好用
  ./ab -n100 -c100 http://www.baidu.com
  -n 请求数
  -c 并发数
  url 目标压测地址
  使用:
  ab -h 出现帮助文档
  

  可以使用结果分析:
  Server Software: BWS/1.1  // 服务器版本 BWS是百度自己开发的服务器
  Server Hostername:www.baidu.com
  Server Port:80
  
  Document Path/
  Document Length:79648 bytes
  
  Concurrency level:10
  Time taken for test:0.984 seconds
  Complete requests:100
  Failed requests77
  (Connect:0,Receive:0,Length:77,Exceptions:0)
  Write errors:0
  Total transferred:8123212bytes
  *Requests per second101.65[#/sec](mean)
  Time per request:98.379[ms](mean)
  *Time per request:9.838[ms] (mean,across all concurrent requests)
  Transfer rate:8063.49[Kbytes/sec] received
  

  Connection Times(ms)
  minmean[+/-sd]medianmax
  22110.62341
  Connect:
  

  

  实际返回的:注意位置  bin 下面才可以的
  [root@iZ25yhxt5uvZ bin]# ./ab -n600 -c300 http://www.tcd120.cn/
  This is ApacheBench, Version 2.3
  Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
  Licensed to The Apache Software Foundation, http://www.apache.org/
  

  Benchmarking www.tcd120.cn (be patient)
  Completed 100 requests
  Completed 200 requests
  Completed 300 requests
  Completed 400 requests
  Completed 500 requests
  Completed 600 requests
  Finished 600 requests
  

  

  Server Software:        Apache/2.4.10
  Server Hostname:        www.tcd120.cn
  Server Port:            80
  

  Document Path:          /
  Document Length:        0 bytes
  

  Concurrency Level:      300
  Time taken for tests:   9.680 seconds
  Complete requests:      600
  Failed requests:        0
  Write errors:           0
  Non-2xx responses:      600
  Total transferred:      269400 bytes
  HTML transferred:       0 bytes
  Requests per second:    61.98 [#/sec] (mean)
  Time per request:       4840.010 [ms] (mean)
  Time per request:       16.133 [ms] (mean, across all concurrent requests)
  Transfer rate:          27.18 [Kbytes/sec] received
  

  Connection Times (ms)
  min  mean[+/-sd] median   max
  Connect:       56   59   3.6     58      73
  Processing:    92 3592 1501.0   4676    5032
  Waiting:       92 3592 1501.0   4676    5032
  Total:        148 3651 1501.7   4733    5089
  

  Percentage of the requests served within a certain time (ms)
  50%   4733
  66%   4781
  75%   4795
  80%   4807
  90%   4827
  95%   4851
  98%   4890
  99%   4921
  100%   5089 (longest request)
  

  

  4 php语言级性能优化
  优化点:少写代码,多用php自身能力
  自写的性能低,冗余高
  多掌握内置函数,很高大上啊
  

  代码运行流程:*.php---> scanner[zend]--->exprs--->parser--->opcodes--->exec--->output;
  

  内置函数的性能测试:内置函数也有好坏之分。用好的内置函数
  
  尽量少用魔法函数。
  

  禁止使用错误抑制符号,在 opcode 前增加 忽略,执行完成后
  

  查看全部的 Opcode 扩展  vld 扩展安装,产生的额外开销
  
  合理使用内存:内存回收机制,控制脚本使用量。unset() 即使释放内存,但是有注销不掉的情况
  尽量少用正则表达式。 其回溯开销较大。
  避免在循环内做计算。循环内尽量不用动态计算。
  减少密集型业务:不适合密集型运算场景,大数据量不好的表现。php 语言由C语言书写的
  
  适合衔接 Webserver与后端服务,UI呈现
  务必使用单引号 字符串 做键值,否则会产生额外的开销。非引号,默认为常量。
  

  5 php周边问题优化
  linux 环境:可以独占服务器,其硬盘将影响其IO读写。数据库也是基于文件系统的。磁盘的性能快慢
  C语言开发php扩展。
  网络连接、内存情况
  减少文件类操作。
  减少Php发起网络请求,对方接口的不确定因素,网络稳定性
  设置超时时间:连接超时、200ms读超时800ms、写超时500ms。
  将串行机制并行化。
  a curl_multi_*(),实现并行化
  b swoole 扩展,实现并行化请求
  压缩php的数据的好坏。 client 快, cpu 会提供额外开销
  缓存复用。估计,需要做缓存,不建议。
  重叠时间窗口思想。串行改并行。是否任务强依赖的开发。重叠时间窗口,这样减少总的请求
  

  旁路方案:
  

  6 性能分析:
  工具: xhporf 开始  使用自己找
  ab 压力测试  vid opcode代码分析
  性能极致优化。
  opcode cache: php 扩展 APC
  

  PECL  : APC 扩展, APC 缓存 代码  2012年就停止开发了。靠谱的缓存类扩展
  

  鸟哥 跟 vac  写的。
  

  高频代码 用 php 扩展执行。
  HHVM 模版渲染 ,facebook 拓展出来的
  

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-652804-1-1.html 上篇帖子: CentOS 7 + PHP 5.6.12 下篇帖子: php后门隐藏技巧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表