在mac os中用http_load,valgrind和xdebug来分析php程序

简介:

本文介绍了使用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为例:


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

运行结果:


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

上面测试了一段从数据库中读取数据列表的php程序,可以看到在并发为5,执行1000次读取,性能可以达到928.657次/每秒。这个值越大越好。如果发现一个程序的数值仅为10几或个位数,那就有必要对该程序进行一些优化了。

http_load的安装很简单:

下载地址:http://acme.com/software/http_load/http_load-12mar2006.tar.gz

安装:


  
  
  1. tar zxvf http_load-12mar2006.tar.gz 
  2. cd http_load-12mar2006/ 
  3. make 
  4. sudo make install 

 

2.以xdebug和valgrind对程序的执行流程和执行时间进行分析

先看一个例子:

从上面的图可以看到程序的执行流程,函数调用次数,执行时间占比。

要看到这张图,除了php开发所需的php,nginx或apache外,我们还需要安装几个工具。

valgrind, QT, graphiviz, qcachegrind

对于php开发环境的搭建可以参见:http://ustb80.blog.51cto.com/6139482/1056493

 

valgrind的安装

之前的一篇文章已经写过了,不再细说。详见http://ustb80.blog.51cto.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取下源码来安装:


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

安装完后,用


  
  
  1. open qcachegrind.app 

可以打开qcachegrind程序,可以看到一个图形界面,左上角有一个打开按钮,通过它来选择cachegrind.out文件进行分析。

 

下面是使用的步骤:

首先需要配置一下php.ini中的xdebug,如果是按本博客中的php安装方法安装的php,其中已经安装了xdebug,仅需要修改下设置即可。

在php.ini中加上这三行,建议放到最后,以后好找。


  
  
  1. xdebug.profiler_enable_trigger=1 
  2. xdebug.profiler_output_dir="/tmp/xdebug"
  3. xdebug.trace_output_dir="/tmp/xdebug"

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


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

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


  
  
  1. cachegrind.out.63720 cachegrind.out.63721 

后面的数字是进程号。

用之前的qcachegrind程序来选择这里的cachegrind.out.63271文件,就可以看到我们程序的执行情况了,带图形的哟,非常直观。

接下来的事情就是根据图形上耗时最长的程序段进行合理的优化了。










本文转自 ustb80 51CTO博客,原文链接:http://blog.51cto.com/ustb80/1056513,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
设计模式 算法 PHP
PHP中的设计模式:策略模式的深入探索与实践在软件开发的广袤天地中,PHP以其独特的魅力和强大的功能,成为无数开发者手中的得力工具。而在这条充满挑战与机遇的征途上,设计模式犹如一盏明灯,指引着我们穿越代码的迷雾,编写出更加高效、灵活且易于维护的程序。今天,就让我们聚焦于设计模式中的璀璨明珠——策略模式,深入探讨其在PHP中的实现方法及其实际应用价值。
策略模式,这一设计模式的核心在于它为软件设计带来了一种全新的视角和方法。它允许我们在运行时根据不同情况选择最适合的解决方案,从而极大地提高了程序的灵活性和可扩展性。在PHP这门广泛应用的编程语言中,策略模式同样大放异彩,为开发者们提供了丰富的创作空间。本文将从策略模式的基本概念入手,逐步深入到PHP中的实现细节,并通过一个具体的实例来展示其在实际项目中的应用效果。我们还将探讨策略模式的优势以及在实际应用中可能遇到的挑战和解决方案,为PHP开发者提供一份宝贵的参考。
|
2月前
|
IDE 安全 网络安全
Xdebug 在不同版本的 PHP 中配置方法有什么不同?
Xdebug 在不同版本的 PHP 中配置方法有什么不同?
120 4
|
2月前
|
缓存 网络协议 网络架构
网络抓包分析【IP,ICMP,ARP】以及 IP数据报,MAC帧,ICMP报和ARP报的数据报格式
本文详细介绍了如何使用网络抓包工具Wireshark进行网络抓包分析,包括以太网v2 MAC帧、IP数据报、ICMP报文和ARP报文的格式,以及不同网络通信的过程。文章通过抓包分析展示了IP数据报、ICMP数据报和ARP数据报的具体信息,包括MAC地址、IP地址、ICMP类型和代码、以及ARP的硬件类型、协议类型、操作类型等。通过这些分析,可以更好地理解网络协议的工作机制和数据传输过程。
网络抓包分析【IP,ICMP,ARP】以及 IP数据报,MAC帧,ICMP报和ARP报的数据报格式
|
2月前
|
监控 IDE PHP
php xdebug的配置、调试、跟踪、调优、分析
php xdebug的配置、调试、跟踪、调优、分析
|
25天前
|
存储 缓存 安全
如何使用 PHP 将天气跟踪集成到 Web 应用程序中
如何使用 PHP 将天气跟踪集成到 Web 应用程序中
30 0
|
25天前
|
Linux C语言 iOS开发
MacOS环境-手写操作系统-06-在mac下通过交叉编译:C语言结合汇编
MacOS环境-手写操作系统-06-在mac下通过交叉编译:C语言结合汇编
14 0
|
2月前
|
设计模式 存储 算法
PHP中的设计模式:策略模式的深入解析与应用在软件开发的浩瀚海洋中,PHP以其独特的魅力和强大的功能吸引了无数开发者。作为一门历史悠久且广泛应用的编程语言,PHP不仅拥有丰富的内置函数和扩展库,还支持面向对象编程(OOP),为开发者提供了灵活而强大的工具集。在PHP的众多特性中,设计模式的应用尤为引人注目,它们如同精雕细琢的宝石,镶嵌在代码的肌理之中,让程序更加优雅、高效且易于维护。今天,我们就来深入探讨PHP中使用频率颇高的一种设计模式——策略模式。
本文旨在深入探讨PHP中的策略模式,从定义到实现,再到应用场景,全面剖析其在PHP编程中的应用价值。策略模式作为一种行为型设计模式,允许在运行时根据不同情况选择不同的算法或行为,极大地提高了代码的灵活性和可维护性。通过实例分析,本文将展示如何在PHP项目中有效利用策略模式来解决实际问题,并提升代码质量。
|
3月前
|
机器学习/深度学习 数据可视化 数据挖掘
【Macos系统】安装VOSviewer及使用VOSviewer教程!!以ESN网络的研究进行案例分析
本文介绍了如何在MacOS系统上安装VOSviewer软件,并以ESN(Echo State Network)网络的研究为例,通过VOSviewer对相关科学文献进行可视化分析,以深入了解ESN在学术研究中的应用和发展情况。
231 0
【Macos系统】安装VOSviewer及使用VOSviewer教程!!以ESN网络的研究进行案例分析
|
3月前
|
存储 安全 Linux
【Azure 应用服务】App Service For Linux 怎么安装Composer,怎么安装PHP扩展,怎么来修改站点根路径启动程序?
【Azure 应用服务】App Service For Linux 怎么安装Composer,怎么安装PHP扩展,怎么来修改站点根路径启动程序?
|
4月前
|
IDE PHP 开发工具
PHP 安装配置Xdebug模块详解
【7月更文挑战第22天】