使用xdebug对php做性能分析调优
作为PHP程序员我们或多或少都了解或使用过xdebug。此文章记录安装和配置xdebug,以及如何使用它来分析php程序。
我的机器环境:
mac
,php
安装 xdebug
推荐使用 pecl 安装扩展
pecl install xdebug
注:可以选择版本, https://pecl.php.net/package/xdebug
启用和配置
如果不知道php的配置文件,可以用 php --ini
查看
启用 xdebug,添加一个独立的 ext-xdebug.ini
到 php 的配置目录
[xdebug]
zend_extension="xdebug.so"
# profiler功能的开关,默认值0,如果设为1,则每次请求都会生成一个性能报告文件。
# xdebug.profiler_enable=0
# 默认值是0,如果设为1 则当我们的请求中包含 XDEBUG_PROFILE 参数时才会生成性能报告文件
xdebug.profiler_enable_trigger=1
# 分析文件保存目录, 默认是 /var/tmp
xdebug.profiler_output_dir="/var/tmp/xdebug"
现在使用 php -m
能看到 xdebug,并且使用 php --ri xdebug
能看到配置项都生效就ok了。
访问并生成分析文件
使用 fpm 要重启,扩展才能生效
现在我们可以访问php项目,记得在请求参数带上 XDEBUG_PROFILE
, 类似 http://127.0.0.1:5671/my?XDEBUG_PROFILE
ok, 现在xdebug应该已经在我们配置的分析文件保存目录产生了文件, 类似
% ll /var/tmp/xdebug
-rw-r--r-- 1 user group 48K 4 29 13:40 cachegrind.out.37947
生成的分析文件直接查看是难以阅读的。所以我们要使用分析查看工具
分析查看工具
使用qcachegrind
要查看分析图表,需要安装 graphviz:
brew install graphviz
安装qcachegrind
brew install qcachegrind
在命令行里使用 qcachegrind
打开它,然后通过它打开要分析的文件。
也可以在命令后直接跟要分析的文 qcachegrind /var/tmp/xdebug/cachegrind.out.37947
使用webgrind
下载: https://github.com/jokkedk/webgrind
要查看分析图表,同样需要安装 graphviz.
分析的时候 "Call Graph" 功能用不了
- 方法 1
sudo ln -s /usr/local/bin/dot /usr/bin/dot
- 方法 2 修改
config.php
/**
* Path to graphviz dot executable
*/
static $dotExecutable = '/usr/local/bin/dot';
// static $dotExecutable = '/usr/bin/dot';
运行:
php -S 0.0.0.0:80 index.php
现在,你可以访问: http://localhost
使用xdebug对php做性能分析调优的更多相关文章
- mysql性能瓶颈分析、性能指标、指标搜集方法与性能分析调优工具
本文主要讲解mysql的性能瓶颈分析.性能指标.性能指标信息的搜集工具与方法.分析调优工具的使用. 文章尚未完成. 性能瓶颈: 慢.写速度比读速度慢很多 主要的性能指标: 访问频度, 并发连接量, ...
- Linux性能分析调优工具介绍
1.常用性能分析工具 1)CPU性能分析工具 vmstat ps sar time strace pstree top 2)Memory性能分析工具 vmstat strace top ipcs ip ...
- Linux 性能分析调优 (四)——案例篇:系统中出现大量不可中断进程和僵尸进程怎么办
之前讲到 CPU 使用率的类型.除了上一节提到的用户 CPU 之外,它还包括系统 CPU(比如上下文切换).等待 I/O 的 CPU(比如等待磁盘的响应)以及中断 CPU(包括软中断和硬中断)等. 在 ...
- PHPStorm 初遇 Xdebug (xdebug代码调试及性能分析)
centos 7 下PHP7安装xdebug # 下载xdebug wget https://xdebug.org/files/xdebug-2.7.2.tgz # 解压 tar -xf xdebug ...
- Python:用pyinstrument做性能分析
导引 在计算密集型计算或一些Web应用中,我们常常需要对代码做性能分析.在Python中,最原始的方法即是使用time包中的time函数(该函数以秒为计时单位): from time import s ...
- chrome使用Timeline做性能分析
使用Timeline做性能分析 Timeline面板记录和分析了web应用运行时的所有活动情况,这是研究和查找性能问题的最佳途径.###Timeline面板概览 Timeline面板主要有三个部分构成 ...
- 《linux性能及调优指南》 3.5 网络瓶颈
3.5 Network bottlenecks A performance problem in the network subsystem can be the cause of many prob ...
- 《Linux 性能及调优指南》写在后面的话
感谢飞哥的翻译. 目前飞哥 (http://hi.baidu.com/imlidapeng)的网址已经不能访问了. <Linux 性能及调优指南>这本书的原文地址:http://www.r ...
- Linux服务器性能查看分析调优
一 linux服务器性能查看 1.1 cpu性能查看 1.查看物理cpu个数: cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc ...
随机推荐
- 网络唤醒(WOL)全解指南:原理篇【转】
转自:https://blog.csdn.net/z5859095/article/details/82819075 什么是网络唤醒网络唤醒(Wake-on-LAN,WOL)是一种计算机局域网唤醒技术 ...
- Windows 下 pycharm 创建Django 项目【用虚拟环境的解释器】
1. 背景 我在 Windows 下的 pycharm 直接创建 全新 Django 项目 会 pip 和其他报错 ,暂时解决不了,另外后续的多个项目只需要一套python 环境, 所以可以 ...
- Ubuntu下搭建Kubernetes集群(4)--部署K8S Dashboard
K8S Dashboard是官方的一个基于WEB的用户界面,专门用来管理K8S集群,并可展示集群的状态.K8S集群安装好后默认没有包含Dashboard,我们需要额外创建它. 首先我们执行命令: wg ...
- docker 中,修改了 mysql 配置,如何重启 mysql?
直接重新启动容器: docker restart containerID/containerName
- es6模块化规范
在 es6 之前是没有块这个概念的,es6zhong 引入:实际如下: 若 xx1 和 xx2 中有变量名相同,且引入在同一 html 下,需要为引入的 script 标签加上 type=“modul ...
- 使用async-profiler简单分析zeebe 工作流引擎的性能
刚开始的时候直接使用的系统暴露的prometheus metrics,发现越高的版本反而性能越差,期间使用过了 perf 打算使用perf 生成火焰图的,但是因为符号缺失,只找到了占用较高的任务,详细 ...
- testcontainers 基本使用
以下是一个简单的基于testcontainers 的测试(基于java 项目) 预备环境 因为testcontainers 基于docker 运行,所以需要安装docker 引擎 项目准备 项目结构 ...
- requests获取图片的宽和高
try: if cover: resp = requests.get('%s?x-oss-process=image/info' % (url), timeout=30) if resp.status ...
- [LeetCode] 13. Roman to Integer 罗马数字转化成整数
Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 ...
- A1050 String Subtraction (20 分)
一.技术总结 这个是使用了一个bool类型的数组来判断该字符是否应该被输出. 然后就是如果在str2中出现那么就判断为false,被消除不被输出. 遍历str1如果字符位true则输出该字符. 还有需 ...