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

[经验分享] 在mac os中用http_load,valgrind和xdebug来分析php程序

[复制链接]

尚未签到

发表于 2018-12-22 07:39:29 | 显示全部楼层 |阅读模式
  本文介绍了使用http_load,valgrind,xdebug这三个工具对php程序进行分析的方法。
用xhprof也可以进行php程序的执行分析,但它会要求在php程序中嵌入一段代码,对于有洁癖的同学来说会觉得不爽,本文所述的方法可以不需要动源码来达到xhprof相同的效果。
  先看一下标题所说的三个工具。


  • 1.http_load是基于linux平台的一种性能测工具。以并行复用的方式运行,用以测试web服务器的吞吐量与负载,测试web页面的性能。
  • 2.valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。
  • 3.xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况。
  调优的步骤一般为:
  1.用http_load找出需要调优的程序
  用http_load我们可以分析出程序的大体性能,以我的mac book为例:


  • http_load -parallel 5 -fetches 1000 /opt/data/www/test/http_load/urls.txt  

  运行结果:


  • 1000 fetches, 5 max parallel, 1.2912e+07 bytes, in 1.07682 seconds
  • 12912 mean bytes/connection
  • 928.657 fetches/sec, 1.19908e+07 bytes/sec
  • msecs/connect: 0.195529 mean, 16.573 max, 0.073 min
  • msecs/first-response: 4.88905 mean, 52.508 max, 3.049 min
  • HTTP response codes:
  •   code 200 -- 1000

  上面测试了一段从数据库中读取数据列表的php程序,可以看到在并发为5,执行1000次读取,性能可以达到928.657次/每秒。这个值越大越好。如果发现一个程序的数值仅为10几或个位数,那就有必要对该程序进行一些优化了。
  http_load的安装很简单:
  下载地址:http://acme.com/software/http_load/http_load-12mar2006.tar.gz
  安装:


  • tar zxvf http_load-12mar2006.tar.gz
  • cd http_load-12mar2006/
  • make
  • sudo make install

  2.以xdebug和valgrind对程序的执行流程和执行时间进行分析
  先看一个例子:

  从上面的图可以看到程序的执行流程,函数调用次数,执行时间占比。
  要看到这张图,除了php开发所需的php,nginx或apache外,我们还需要安装几个工具。
   valgrind, QT, graphiviz, qcachegrind
  对于php开发环境的搭建可以参见:http://ustb80.blog.运维网.com/6139482/1056493
  valgrind的安装
  之前的一篇文章已经写过了,不再细说。详见http://ustb80.blog.运维网.com/6139482/1054942
  QT安装
  qcachegrind是依赖于QT和graphiviz的,需要先安装前两个
  QT可以从http://get.qt.nokia.com/qt/source/下载,挑最新的dmg下即可,我挑的是http://get.qt.nokia.com/qt/source/qt-mac-opensource-4.8.1.dmg
  下载之后,双击解压,再双击里面的pkg安装即可,傻瓜式安装。
  graphiviz安装
  接着安装graphiviz,这个工具用于绘图,下载页为:http://www.graphviz.org/Download_macos.php
  挑对应的版本下载,双击pkg安装即可
  qcachegrind安装
  qcachegrind是包含在kcachegrind中的,用svn取下源码来安装:


  • svn co svn://anonsvn.kde.org/home/kde/trunk/KDE/kdesdk/kcachegrind kcachegrind
  • cd kcachegrind/qcachegrind
  • qmake -spec 'macx-g++'
  • make

  安装完后,用


  • open qcachegrind.app

  可以打开qcachegrind程序,可以看到一个图形界面,左上角有一个打开按钮,通过它来选择cachegrind.out文件进行分析。
  下面是使用的步骤:
  首先需要配置一下php.ini中的xdebug,如果是按本博客中的php安装方法安装的php,其中已经安装了xdebug,仅需要修改下设置即可。
  在php.ini中加上这三行,建议放到最后,以后好找。


  • xdebug.profiler_enable_trigger=1
  • xdebug.profiler_output_dir="/tmp/xdebug"
  • xdebug.trace_output_dir="/tmp/xdebug"

  当这个选项打开后,我们就可以通过url或是在post的时候触发xdebug了,例如:


  • http://localhost/test/xdebug.php?XDEBUG_PROFILE=1

  注意问号后的参数,当我们的地址栏中带有这个参数并进行了访问后,在xdebug.profiler_output_dir所指定的目录就会生成一个cachegrind.out.XXXX文件。这个文件就可以用qcachegrind来分析了。


  • cachegrind.out.63720 cachegrind.out.63721

  后面的数字是进程号。
  用之前的qcachegrind程序来选择这里的cachegrind.out.63271文件,就可以看到我们程序的执行情况了,带图形的哟,非常直观。
  接下来的事情就是根据图形上耗时最长的程序段进行合理的优化了。




运维网声明 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-654186-1-1.html 上篇帖子: disuz 7.2文字常量定义文件messages.lang.php 下篇帖子: 解决:php
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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