阅读全文
http://click.aliyun.com/m/23007/
当我们发现生产环境的某个接口执行时间特别长时应该怎么做?是不是直接登录线上机器单步调试?或者打大量的log然后分析? 一般我们可以把分析流程分为如下几步操作:
云栖社区的MarkDown渲染做的太差了,编号都错位,大家还是到我的博客看吧 Tideways和xhgui打造PHP非侵入式监控平台
分析开发环境下执行是否会慢;
如果是代码问题,在开发环境下就能检测出来;
分析预发环境执行是否会慢;
如果是数据库或者第三方扩展问题,在预发环境就能检查出来。
从生产环境摘一台机器,分析代码执行慢的原因;
如果是机器的问题,在生产环境就能检查出来。
1,2,3步骤都需要去分析代码,看哪部分执行时间长。如果人工一句一句代码去排查,很容易导致用户流失。大多时候我们会使用第三方的分析工具tideways或者xhprof来快速发现问题。选择哪一个工具比较好呢?xhprof虽然来自facebook但已经很久不更新,官方源已经显示This package is abandoned and no longer maintained(此包已废弃,不再维护)。tideways恰好相反,一直有商业公司在维护,并且积极的支持了PHP7。两个扩展都是开源的,综上所述我建议大家选择tideways来分析代码。
tideways扩展能把每条请求生成详细的执行日志,我们通过对日志做简单的分析就能看到程序哪部分耗时最长,这里可以使用xhprof的UI程序(xhprof生成的日志和tideways生成的日志格式通用),交互虽然不大友好但是够用了。如果想有更好的视觉效果,建议下载xhgui,一款基于Bootstrap的xhprof UI程序。
在开始搭建PHP非侵入式监控平台之前,我需要解释几个问题。
一. Tideways这家公司如何盈利?
Tideways这家公司与Sentry的营销模式一样,都是卖存储服务+数据分析服务。
tideways.so扩展是开源的,可以免费使用。但是tideways.so扩展只能生成日志文件,我们获得日志文件后还需要花很长时间去整理和分析。如果你购买了Tideways的服务,就能无缝的将日志存储到他们的服务器,登录他们提供的后台就能看到项目代码和服务器的运行状况。加上各种可视化的图表展示,体验非常的好,有很多大公司愿意付费。
二. 安装扩展后代码改动会不会很大?
tideways.so扩展提供的监控方式是非侵入式的监控,不会对当前项目有任何的影响。我们只需要在Nginx配置文件中加上一行配置即可:
fastcgi_param PHP_VALUE "auto_prepend_file=/home/admin/xhgui/external/header.php";
代码的含义:在执行主程序前都运行我们指定的PHP脚本
具体如何安装这个服务,我在文章的下半部分会详细说明。现在我们需要知道『非侵入式的监控』就是不用改动一行项目代码。
三. 每个请求都生成日志会不会影响服务本身?
用户的每次请求都生成执行日志对服务会有轻微的影响。虽然tideways.so扩展提供的监控方式是非侵入式的不会影响线上项目,但对CPU和内存的消耗是不可忽略的。为了减少对内存和CPU的消耗,我们可以控制生成日志的频率,还能编写生成日志的规则。默认频率为1%(每100个请求生成1条日志,这里的概率非绝对)。
如果有多台服务器,只需要对一台进行监控,机器比较多的话可以每个机房一台。
搭建非侵入式监控环境
阅读全文
http://click.aliyun.com/m/23007/
分享到:
相关推荐
最新 新版本已开发完成,做了如下改进: :rainbow:支持本地Sqlite... 2019年想定个目标-重建xhprof扩展和xhgui-branch,有兴趣的朋友请移步到我的博客留言交流一下 获取大量信息PHP扩展很多,可以使用uprofiler,tide
我在基于xhgui搭建PHP监控平台的过程中遇到很多问题,自己对PHP和前端都还算了解,打算边修边优化并将更新的代码开源。 二. 为什么不直接在源项目提交Merge Request? 我会将一些基本的语法Bug修复后提交Merge ...
xhgui, 在MongoDB上,构建XHProf数据的图形界面 xhgui基于MongoDB的XHProf数据图形界面。这里工具需要安装 XHProf 或者它的一个 fork Uprofiler 。... XHProf是一个用于记录和提供分析数据的PHP扩展。 XHGui ( 这里
dnmp=Docker+Nginx+MySQL+PHP+Redis+MongDB+=xhgui+xhprof+tideways dnmp+=
Tideways Toolkit(tk)是一组命令行工具,可与PHP交互并通过与PHP或与PHP的调试扩展交互来执行各种调试,概要分析和自省作业。 正在安装 我们建议使用每个带标记的发行版提供的二进制下载之一来安装Tideways ...
Tideways XHProf扩展 tideways_xhprof扩展的家tideways_xhprof的分层...关于tideways和tideways_xhprof扩展 现在,此存储库包含名为tideways_xhprof的扩展名,该扩展名仅包含与XHProf相关的(Callgraph)探查器功能
Tideways Profiler提供了对PHP和HHVM应用程序的功能级见解。 借助Chrome扩展程序,可以触发与Profiler连接的开发和生产服务器的跟踪收集。 要使用该扩展程序,您需要一个Tideways帐户。 您可以在https://tideways.io...
5. **Code Profiling**:使用如`xhprof`、`tideways`或`XHGUI`等工具进行代码剖析,找出性能瓶颈。 6. **优化算法和数据结构**:对代码逻辑进行审查,使用更高效的算法和适当的数据结构可以显著提高执行效率。 7. ...
Tideways Profiler为您的PHP和HHVM应用程序提供功能级别的见解。使用Chrome扩展程序,可以触发与Profiler连接的开发和生产服务器的痕迹集合。 要使用扩展名,您需要一个Tideways帐户。您可以在https://tideways.io上...
该平台解决了在生产中运行 Profiler 时高效收集、聚合和分析分析数据的问题。要求PHP 5.3、5.4、5.5 或 5.6 cURL 和 PCRE 开发标头( apt-get install libcurl4-openssl-dev libpcre3-dev ) 使用 Linux i386、amd...
标题中的“关于php-redis的pconnect长链接的思考”主要涉及的是PHP与Redis通信时使用持久连接(pconnect)的原理和实际效果。描述中提到的问题是,有人认为php-redis的pconnect并未真正实现长连接,因为请求结束后...
IMemUse%和EMemUse%字段分别是Inclusive和Exclusive内存使用量的百分比,表示方法及其子方法所占用内存(IMemUse%)和方法本身所占用内存(EMemUse%)相对于总内存使用的比例。 Incl.PeakMemUse(bytes)和Excl....