工作了一两年的 PHPer 大概都多多少少知道一些性能分析的工具,比如 Xdebug、xhprof、New Relic 、OneAPM。使用基于 Xdebug 进行 PHP 的性能分析,对于本地开发环境来说是够用了,但如果是线上环境的话,xdebug 消耗较大,配置也不够灵活。相比 Xdebug ,xhprof 性能消耗较小,但是 xhprof 注入代码后我们还需要实现保存 xhprof 数据以及展示数据的 UI,听起来似乎又是一大堆工作。

很多人都知道,New Relic 和 OneAPM 是两款类似的性能分析工具,通过简单的安装之后,就有现成的图表和分析数据可用。前一段时间尝试过线上使用 New Relic ,估计是因为墙的原因,造成了 php-fpm 进程阻塞,具体表现为 netstat 中 php-fpm 开启的端口始终不回收,墙内环境使用墙外服务器很难保证服务的稳定性,所以今天主要介绍一下国内这款 OneAPM PHP性能分析产品。

PHP Agent 的安装与简易用法

注册账户后, OneAPM 会提供一个 License Key,下载 PHP Agent 之后,执行安装脚本:

1. 解压 Agent 安装包

tar -xzf OneAPM_php_Agent_latest.tar.gz

2.定位至「安装包所在路径」

cd oneapm-php5-linux-install-script

3. 执行安装脚本

sudo ./oneapm-install install --license=BQ4NSVlMX399eAhNWUdfVE790d1

如果提示未找到 PHP 路径或安装失败,执行下面这条一键安装命令:

sudo ./oneapm-install install --php-path=/usr/local/php5/bin --php-ini-file=/usr/local/php5/etc/php.ini --license=BQ4NSVlMX399eAhNWUdfVE790d1

根据服务器 PHP 环境修改上面命令中 PHP 路径、php.ini 路径和授权码,修改后执行这一键安装命令。

等待安装脚本执行。若出现以下信息,则安装成功。

OneAPM is now installed on your system. Congratulations! Restart your web server or servers. Any question join qq group:321095806 or contact http://support.oneapm.com

安装完成之后,重启 Apache 或 php-fpm。然后,稍等片刻,等待 OneAPM 接收 Agent 发送的数据。

PHP 性能追踪及分析

总览

Dashboard 中查看到具体某个时间段整个系统的稳定程度,我们在图上看到了一个异常波峰,时间在早上6点左右,通过列表筛选器移除 WEB External 后看图。其他业务都很正常,执行到最后 PHP 层,平均时间也只用了 10ms 左右。回到上图点击波峰的指示器可以看到具体明细。

应用吞吐量:是指应用程序每分钟被调用的次数(cpm,即 Calls Per Minute),吞吐量可以反映应用系统对于用户请求的响应能力。

响应时间图主要由 4 部分组成:

Web 事务:应用中 Web 事务的响 应时间;

Database:应用中 SQL 语句的响应时间;

WEB External :HTTP 请求第三方服务调用;

后台任务:代表应用中 后台任务的执行时间;

外部服务 WEB External

WEB External 外部服务,是指应用在运行时所调用的其他外部应用提供的服务,通常由第三方通过 API 提供,使调用者可以使用第三方提供的相应服务。

刚才我们在总览页面发现 WEB External 耗时很多,当打开详情时可以明显看到,原来是微信的接口在6点钟抽了。同样该页面还可以监控到第三方服务调用的响应情况。比如 217ms 的 api.hitokoto.us 服务。

SQL 缓慢的监控

OneAPM 数据库功能可以选择数据库类型,包括“All、Database、选择 Database,则展示数据库的相关信息,同时会增加展示“增、 删、改、查”4 类 SQL 语句的响应时间和吞吐量图;Database、MongoDB、Redis、Memcache(d)”5 项。SQL 语句栏可以按照“总响应时间从长到短”、“平均响应时间从长到短”、“吞吐量从高到低”来进行排序。

举例:通过 Web 事务的响应时间占比查看到一个脚本执行时间相对过长,通过下图可以看到数据库查询占了579ms。通过切换到详情页面,可以看到整个脚本的调用过程,最终发现是程序 mysqli.php:88 行执行的查询占用了过长的时间。

以上只是通过 OneAPM 持续检查程序稳定性的一个基本方法。

程序在日常运行中由于受到的访问量不同,很有可能在某个时间点上出现大面积的延迟,比如并发突然增高或访问某一部分接口的比例突然过高,而平时 Apdex 指标却看起来非常漂亮,那么这个时候通过 OneAPM 就很容易发现程序中影响性能的部分,从而继续改进或优化代码。

性能实战:Wordpress 怎么分析性能瓶颈?

起因是这样子的,朋友有个国外的网站(针对外国人),最近网站挂掉了,就帮忙各种修复了。

但是我本地测试了下网页访问非常慢,其实在我给搞之前也一直如此。。

如下图,第一个请求异常的慢。这个是 contact-us 页面的访问,不涉及太多 sql 查询,也没啥图片。

我点了几个页面都是第一个请求异常的慢 (>10s).

内存,各种都正常,MySQL 慢查询也看了没问题。。

后来终于通过 OneAPM 发现,主要原因在于: wp 使用的主题有个会检查主题最新更新事件,判断依据就是,$now-$last 如果大于 6 个小时,就去主题官网检查下更新,而 $last 打印出来居然是 2014 的,主题已经 N 久没更新了。。。所以每次请求都会有检查,好像他们主题网站已经跪掉了,所以每次检查需要 10 秒钟。。。

去掉之后,第一个请求时间瞬间从十几秒二十秒降到 1 秒了,除了首页,其他页面算是秒开了~~

有图为证:

本文已经征得原作者同意,授权在 OneAPM 官方技术博客发布。想技术文章,可以点击这里!

php mysql 网站性能分析工具_如何使用工具进行线上 PHP 性能追踪及分析?相关推荐

  1. xhprof进行线上PHP性能追踪及分析

    转载地址:http://avnpc.com/pages/profiler-php-performance-online-by-xhprof 使用xhprof进行线上PHP性能追踪及分析 日志未经声明, ...

  2. 如何使用工具进行线上 PHP 性能追踪及分析?

    工作了一两年的 PHPer 大概都多多少少知道一些性能分析的工具,比如 Xdebug.xhprof.New Relic .OneAPM.使用基于 Xdebug 进行 PHP 的性能分析,对于本地开发环 ...

  3. 最好用的_古书制作工具_古籍排版工具_古文排版_自动生成古书_多种古书风格_古籍制作工具

    古书制作工具_古籍排版工具使用方法 前言 最好用的古书制作工具, 最好用的古籍排版工具, 最好用的古籍制作工具, 最好用的古文排版, 自动生成古书, 多种古书风格 一.看下源图片见最后面 二.使用步骤 ...

  4. 最好用的_古书制作工具_古籍排版工具_古文排版_自动生成古书_多种古书风格_古籍制作工具_个性化书籍制作工具

    古书制作工具_古籍排版工具使用方法 前言 最好用的古书制作工具, 最好用的古籍排版工具, 最好用的古籍制作工具, 最好用的古文排版, 自动古书排版, 自动书籍排版, 自动生成古书, 多种古书风格 可自 ...

  5. mysql数据库查询工具''_数据库查询工具

    多肉数据查询系统是一款非常实用的查询多肉植物小工具,软件提供了多肉植物的习性.照片.如何培养等等功能,对于喜欢在家里养些花花草草的用户会有很大的帮助,操作也很简单,基本一看就会.接下来非凡软件站小编就 ...

  6. mysql binlog查看工具_数据同步工具otter(一)谈谈binlog和canal

    之前因为懒,没有针对otter做更多的解释和说明,在使用过程中,也发现了一些问题,此次补上一个完整的文档,方便大家使用. Otter是基于cannal开源的,canal又是基于mysql binlog ...

  7. 速卖通关键词挖掘工具_利用SEO工具挖掘同行竞争对手关键词数据快速布局网站词库...

    工欲善其事必先利其器,这句话告诉我们,善用工具,往往会起到很好的效果.对于SEO来说,做排名有很多方面的工作,这其中网站内容是非常重要的部分.而网站内容是围绕关键词的布局而展开.所以一个网站的关键词布 ...

  8. seo伪原创工具_伪原创工具哪个好用?

    在日常优化工作过程中,一个站长是需要同时管理好几个网站的,所以导致没有时间或精力写出更多的原创内容,在这个时候就需要借助伪原创工具来实现内容更新的目的了,比较实用的伪原创工具主要有:石青.小发猫.魔术 ...

  9. 制定交叉编译工具_制作交叉编译工具链的方法总结(详细)

    网上这类文章比较多,但是都不是很具体,刚好有门课结课论文要写这个,所以就总结了一下.以下的过程都是在ubuntu7.10上实际运行过的. 手工制作交叉编译工具 在制作工具开始前先要选好所需要的Binu ...

最新文章

  1. Python学习笔记2 基本数据类型
  2. 功能演示:戴尔PowerConnect 8024交换机VLAN的创建与删除
  3. 腾讯会议又一黑科技,屏蔽超过 200 种会议噪声是如何做到的?
  4. anaconda3配置环境变量_阿里云ECS配置Jupyter Notebook
  5. Windows XP SP3支持多用户远程桌面连接
  6. http协议报文体_HTTP报文基本概念学习
  7. Android之Notification初识
  8. oracle sqlarea表结构,oracle v$sqlarea 分析SQL语句使用资源情况
  9. HP 380 G5安装CentOS7时找不到P400 raid卡
  10. select count(*) ,count() , select *
  11. VS2017 Ankhsvn不可用
  12. matlab学习---矩阵求最大值,赋值
  13. 计算机版的微信的功能是什么,计算机上的微信有没有收藏功能?电脑端如何打开微信收藏?...
  14. Android中wifi认证的实现
  15. 学计算机用商用本,开学装机,笔记本电脑市场解析及购机推荐
  16. classloder
  17. 【DRP项目】安装Oracle数据库之服务端安装+客户端安装(一)
  18. 让mysql支持emoji表情_让MySQL支持Emoji表情 mysql 5.6
  19. 聊下图片滤镜,手机上的,lookup table(颜色查找表
  20. l5630鲁大师跑分_【搞机作战室】鲁大师电脑性能测试跑分科普

热门文章

  1. 鼓楼大街最有名小吃一览表-----不吃一次在北京白活了!!
  2. HCIP小型综合实验
  3. Windows程序设计——CreateFont详细解释
  4. error: undefined reference to `gsl_vector_get‘
  5. 《韭菜的自我修养》读书笔记
  6. mysql 默认值 now_mysql设置datetime默认值为now
  7. Python基础学习大纲(20天速成)-第四篇
  8. idea集成svn 从svn下载项目流程
  9. 洛谷 1131 [ZJOI2007] 时态同步
  10. 平年、闰年的判断(python简单地表达)