30资源币/天 购买
30资源币/天 购买
查看: 1452|回复: 135

PHP探针实现原理分析

  [复制链接]
[未点亮至尊红钻]发帖数量不足10篇 [未点亮至尊黄钻]威望不足10点 [未点亮至尊蓝钻]在线时间不足10小时 [未点亮至尊绿钻]贡献度不足10点 [未点亮至尊紫钻]金币不足100个 [未点亮至尊粉钻]精华贴数不足10贴 [未点亮至尊黑钻]活跃不足8个
  • TA的每日心情
    难过
    昨天 01:31
  • 签到天数: 307 天

    连续签到: 16 天

    [LV.8]以坛为家I

     等级: 
     级别: 管理员
     UID:  1   [未点亮普号显示]钻石不足3个
     资源币:
     交易币:
     金 钱:
     活 跃:
     发 贴: ()
     交易币:  
    性 别: I'm 火星人!
    阅读权限: 255
    在线时长:  小时
    注册时间: 2019-6-1
    最后登录: 1970-1-1
    发表于 2019-9-28 21:59:36 |显示全部楼层
    【华为云-企业级云主机2C4G5M 707元/年】
    display_picture.php?url=https%3A%2F%2Fmmbiz.qpic.jpg

    " N4 W" K% c7 H* c' J5 Z
    (欢迎光临多资源官网_www.duozy.cn)
    作用(欢迎光临多资源官网_www.duozy.cn)

    : w3 o4 j% c% _3 D
    • 调试 eg: xdebug, zend debug
    • 性能分析 xhprof
    • 链路监控 apm, molten, skywalking-php-sdk
      - M) C4 z! x2 y, F$ U# j9 e6 V
    实现方式(欢迎光临多资源官网_www.duozy.cn)
    (欢迎光临多资源官网_www.duozy.cn)
    总的来讲有两种实现方式
    5 _2 l$ B+ o% X0 W. E, s) m
    • 添加代理,对每个函数的执行增加代理,在代理中针对性的增加记录。
    • 在模块注册过程中修改CG(function_table) 或 CG(class_table)。
      2 t4 C1 z* g, ?, I  x7 }$ }
    添加代理的方式(欢迎光临多资源官网_www.duozy.cn)
    (欢迎光临多资源官网_www.duozy.cn)

    2 L: k6 K3 O6 \# R  P
    9 }. N/ T9 Y! L# f% l. g
    display_picture.php?url=https%3A%2F%2Fmmbiz.qpic.jpg

    ; x- K& l4 c) h4 S7 q/ W; B8 Y! h3 K

    0 I6 L/ g! y8 ?+ B. x
    display_picture.php?url=https%3A%2F%2Fmmbiz.qpic.jpg
    (欢迎光临多资源官网_www.duozy.cn)
    (欢迎光临多资源官网_www.duozy.cn)
            以上代码中有两个关键函数 zend_execute_exzend_execute_internal,通过修改这两个函数来添加代理,保存旧值是为了在代理中恢复原始PHP代码的执行。
    4 z$ _$ N; t' C8 t% ?       不同场景下对数据的收集详细程度不同,例如调试和性能分析时需要运行相关的所有数据,而在链路监控中只需要针对性的进行处理即可,在molten中即通过设置需要代理的名单来进行针对性的监控。(欢迎光临多资源官网_www.duozy.cn)
    (欢迎光临多资源官网_www.duozy.cn)

    . K# q; C& m" r9 g
    " L: \  [( b+ A
    (欢迎光临多资源官网_www.duozy.cn)
    display_picture.php?url=https%3A%2F%2Fmmbiz.qpic.jpg

    8 [0 o4 G5 V3 m* K/ O7 J! F& }
    (欢迎光临多资源官网_www.duozy.cn)
            从上面可以看出增加探针之后性能影响因素包括 检测当前方法是否需要进行代理及日志的处理上,同时由于每个方法的执行都要经过代理进行判断及处理在性能上会有一部分损耗.
    # z  W$ K( U/ O1 H, p' U       以下为对猜想的验证:(欢迎光临多资源官网_www.duozy.cn)
    验证代码(欢迎光临多资源官网_www.duozy.cn)
    display_picture.php?url=https%3A%2F%2Fmmbiz.qpic.jpg
    (欢迎光临多资源官网_www.duozy.cn)

    $ l  V" p( n" y; t3 b1 l
    display_picture.php?url=https%3A%2F%2Fmmbiz.qpic.jpg
    (欢迎光临多资源官网_www.duozy.cn)

    $ ~7 |4 z: U& Y" `/ a" b        上图中的参数t为执行的函数数量,代码中执行的函数不在探针的统计列表中。可以看到所执行函数次数从100增加到400后QPS降低了15%左右。
    " r7 r" N( P# X针对Lumen框架的测试可以看到之进行简单输出内容的一个接口性能影响甚至达到了20%+。(欢迎光临多资源官网_www.duozy.cn)
           综上可以看出通过代理的方式优点是可以很方便的针对用户定义的函数/类进行监控,但是性能损耗也会受到框架及业务逻辑复杂度的影响。
    * W! T# ^+ N0 M% N# r修改Hash表的方式
    - `/ T8 D8 p$ F3 I3 Z7 X8 }3 X1 w+ f# U
    2 Q1 u1 @9 \7 G" i* r, x1 U        在模块注册过程中修改Hash表相比于代理来说性能损耗很小,损耗大小主要取决于探针逻辑及增加的钩子的多少(探针逻辑越复杂,钩子执行的越多性能损耗也就越高)
    * z* ?" V1 V& s2 \以下代码为Molten中的实现方式。
    % n8 Y$ P  v# g# a% j; `+ y: Q2 E9 O
    display_picture.php?url=https%3A%2F%2Fmmbiz.qpic.jpg
    (欢迎光临多资源官网_www.duozy.cn)
    (欢迎光临多资源官网_www.duozy.cn)
    (欢迎光临多资源官网_www.duozy.cn)
           针对内置函数也可以使用修改handler的方式来处理,如下为opcache中覆盖内置文件相关函数的方法,相比上面的直接替换的方式更简单易懂,skywalking-php-sdk中使用的即是这种方式。(欢迎光临多资源官网_www.duozy.cn)
    display_picture.php?url=https%3A%2F%2Fmmbiz.qpic.jpg

    3 U1 d* {! F+ G) }. U
    (欢迎光临多资源官网_www.duozy.cn)
    对比
    % q% R8 r- x7 n; X: I5 u
    " B# f  C# W1 i! {- ^2 q; S* r/ B

    : N, |5 Q. W, w% m
    代理修改全局Hash表
    内置函数可以可以
    自定义函数可以不可以
    性能差,执行函数越多性能越差好,影响较小

    % {9 U2 B7 p& m, A! i1 O- I8 p6 b7 X
    (欢迎光临多资源官网_www.duozy.cn)
    猜想
    6 h3 T8 O5 i. |$ o" S(欢迎光临多资源官网_www.duozy.cn)
           通过查阅资料发现zend引擎中可以对编译函数进行改写,因此如果把用户自定义函数钩子添加到函数注册的节点,那么就可以不通过代理直接达到修改Hash表方式的性能。
    % f. O+ k- o# E7 a. ?" u! B6 |
    5 w* p: V# c9 V8 g* q! e  E4 [
    7 m! n& U& A/ x5 \+ d
    温馨提示:
    1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
    2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
    3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
    4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
    5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。




    上一篇:PHP与XML概述
    下一篇:号外!OneAPMAiPHP探针出 Windows版本啦!
    楼主热帖
    【华为云-香港云服务器130元/年起】
    [未点亮至尊红钻]发帖数量不足10篇 [未点亮至尊黄钻]威望不足10点 [未点亮至尊蓝钻]在线时间不足10小时 [未点亮至尊绿钻]贡献度不足10点 [未点亮至尊紫钻]金币不足100个 [未点亮至尊粉钻]精华贴数不足10贴 [未点亮至尊黑钻]活跃不足8个
  • TA的每日心情
    无聊
    2019-9-17 19:02
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

     等级: 
     级别: 注册会员
     UID:  1562   [未点亮普号显示]钻石不足3个
     资源币:
     交易币:
     金 钱:
     活 跃:
     发 贴: ()
     交易币:  
    性 别: I'm 火星人!
    阅读权限: 60
    在线时长:  小时
    注册时间: 2019-9-12
    最后登录: 1970-1-1
    发表于 2019-9-29 09:31:19 |显示全部楼层
    【华为云-企业级云主机2C4G5M 707元/年】
    找到好贴不容易,我顶你了,谢了

    使用道具 举报

    [未点亮至尊红钻]发帖数量不足10篇 [未点亮至尊黄钻]威望不足10点 [未点亮至尊蓝钻]在线时间不足10小时 [未点亮至尊绿钻]贡献度不足10点 [未点亮至尊紫钻]金币不足100个 [未点亮至尊粉钻]精华贴数不足10贴 [未点亮至尊黑钻]活跃不足8个
  • TA的每日心情
    慵懒
    昨天 11:48
  • 签到天数: 140 天

    连续签到: 1 天

    [LV.7]常住居民III

     等级: 
     级别: 注册会员
     UID:  979   [未点亮普号显示]钻石不足3个
     资源币:
     交易币:
     金 钱:
     活 跃:
     发 贴: ()
     交易币:  
    性 别: I'm 火星人!
    阅读权限: 60
    在线时长:  小时
    注册时间: 2019-6-26
    最后登录: 1970-1-1
    发表于 2019-9-29 18:08:09 |显示全部楼层
    【华为云-企业级云主机2C4G5M 707元/年】
    看帖回帖是美德!

    使用道具 举报

    [未点亮至尊红钻]发帖数量不足10篇 [未点亮至尊黄钻]威望不足10点 [未点亮至尊蓝钻]在线时间不足10小时 [未点亮至尊绿钻]贡献度不足10点 [未点亮至尊紫钻]金币不足100个 [未点亮至尊粉钻]精华贴数不足10贴 [未点亮至尊黑钻]活跃不足8个
  • TA的每日心情
    奋斗
    前天 10:46
  • 签到天数: 157 天

    连续签到: 4 天

    [LV.7]常住居民III

     等级: 
     级别: 注册会员
     UID:  792   [未点亮普号显示]钻石不足3个
     资源币:
     交易币:
     金 钱:
     活 跃:
     发 贴: ()
     交易币:  
    性 别: I'm 火星人!
    阅读权限: 60
    在线时长:  小时
    注册时间: 2019-6-3
    最后登录: 1970-1-1
    发表于 2019-9-29 18:19:26 |显示全部楼层
    【华为云-企业级云主机2C4G5M 707元/年】
    看帖回帖是美德!

    使用道具 举报

    [未点亮至尊红钻]发帖数量不足10篇 [未点亮至尊黄钻]威望不足10点 [未点亮至尊蓝钻]在线时间不足10小时 [未点亮至尊绿钻]贡献度不足10点 [未点亮至尊紫钻]金币不足100个 [未点亮至尊粉钻]精华贴数不足10贴 [未点亮至尊黑钻]活跃不足8个
  • TA的每日心情
    擦汗
    2020-1-23 16:49
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

     等级: 
     级别: 注册会员
     UID:  401   [未点亮普号显示]钻石不足3个
     资源币:
     交易币:
     金 钱:
     活 跃:
     发 贴: ()
     交易币:  
    性 别: I'm 火星人!
    阅读权限: 60
    在线时长:  小时
    注册时间: 2019-6-3
    最后登录: 1970-1-1
    发表于 2019-9-29 23:00:47 |显示全部楼层
    【华为云-企业级云主机2C4G5M 707元/年】
    我是来刷分的,嘿嘿

    使用道具 举报

    [未点亮至尊红钻]发帖数量不足10篇 [未点亮至尊黄钻]威望不足10点 [未点亮至尊蓝钻]在线时间不足10小时 [未点亮至尊绿钻]贡献度不足10点 [未点亮至尊紫钻]金币不足100个 [未点亮至尊粉钻]精华贴数不足10贴 [未点亮至尊黑钻]活跃不足8个
  • TA的每日心情
    擦汗
    2020-1-22 21:32
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

     等级: 
     级别: 注册会员
     UID:  1550   [未点亮普号显示]钻石不足3个
     资源币:
     交易币:
     金 钱:
     活 跃:
     发 贴: ()
     交易币:  
    性 别: I'm 火星人!
    阅读权限: 60
    在线时长:  小时
    注册时间: 2019-9-11
    最后登录: 1970-1-1
    发表于 2019-9-30 01:04:47 |显示全部楼层
    【华为云-企业级云主机2C4G5M 707元/年】
    支持一下

    使用道具 举报

    [未点亮至尊红钻]发帖数量不足10篇 [未点亮至尊黄钻]威望不足10点 [未点亮至尊蓝钻]在线时间不足10小时 [未点亮至尊绿钻]贡献度不足10点 [未点亮至尊紫钻]金币不足100个 [未点亮至尊粉钻]精华贴数不足10贴 [未点亮至尊黑钻]活跃不足8个
  • TA的每日心情
    无聊
    昨天 08:12
  • 签到天数: 143 天

    连续签到: 1 天

    [LV.7]常住居民III

     等级: 
     级别: 注册会员
     UID:  1209   [未点亮普号显示]钻石不足3个
     资源币:
     交易币:
     金 钱:
     活 跃:
     发 贴: ()
     交易币:  
    性 别: I'm 火星人!
    阅读权限: 60
    在线时长:  小时
    注册时间: 2019-7-6
    最后登录: 1970-1-1
    发表于 2019-9-30 02:00:08 |显示全部楼层
    【华为云-企业级云主机2C4G5M 707元/年】
    没看完~~~~~~ 先顶,好同志

    使用道具 举报

    [未点亮至尊红钻]发帖数量不足10篇 [未点亮至尊黄钻]威望不足10点 [未点亮至尊蓝钻]在线时间不足10小时 [未点亮至尊绿钻]贡献度不足10点 [未点亮至尊紫钻]金币不足100个 [未点亮至尊粉钻]精华贴数不足10贴 [未点亮至尊黑钻]活跃不足8个

    该用户从未签到

     等级: 
     级别: 注册会员
     UID:  71   [未点亮普号显示]钻石不足3个
     资源币:
     交易币:
     金 钱:
     活 跃:
     发 贴: ()
     交易币:  
    性 别: I'm 火星人!
    阅读权限: 60
    在线时长:  小时
    注册时间: 2019-6-3
    最后登录: 1970-1-1
    发表于 2019-9-30 04:45:42 |显示全部楼层
    【华为云-企业级云主机2C4G5M 707元/年】
    帮帮顶顶!!

    使用道具 举报

    [未点亮至尊红钻]发帖数量不足10篇 [未点亮至尊黄钻]威望不足10点 [未点亮至尊蓝钻]在线时间不足10小时 [未点亮至尊绿钻]贡献度不足10点 [未点亮至尊紫钻]金币不足100个 [未点亮至尊粉钻]精华贴数不足10贴 [未点亮至尊黑钻]活跃不足8个
  • TA的每日心情
    奋斗
    2020-1-23 13:39
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

     等级: 
     级别: 注册会员
     UID:  248   [未点亮普号显示]钻石不足3个
     资源币:
     交易币:
     金 钱:
     活 跃:
     发 贴: ()
     交易币:  
    性 别: I'm 火星人!
    阅读权限: 60
    在线时长:  小时
    注册时间: 2019-6-3
    最后登录: 1970-1-1
    发表于 2019-9-30 07:11:37 |显示全部楼层
    【华为云-企业级云主机2C4G5M 707元/年】
    找到好贴不容易,我顶你了,谢了

    使用道具 举报

    [未点亮至尊红钻]发帖数量不足10篇 [未点亮至尊黄钻]威望不足10点 [未点亮至尊蓝钻]在线时间不足10小时 [未点亮至尊绿钻]贡献度不足10点 [未点亮至尊紫钻]金币不足100个 [未点亮至尊粉钻]精华贴数不足10贴 [未点亮至尊黑钻]活跃不足8个

    该用户从未签到

     等级: 
     级别: 注册会员
     UID:  261   [未点亮普号显示]钻石不足3个
     资源币:
     交易币:
     金 钱:
     活 跃:
     发 贴: ()
     交易币:  
    性 别: I'm 火星人!
    阅读权限: 60
    在线时长:  小时
    注册时间: 2019-6-3
    最后登录: 1970-1-1
    发表于 2019-9-30 15:51:06 |显示全部楼层
    【华为云-企业级云主机2C4G5M 707元/年】
    学习了,谢谢分享、、、

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    异地登录提醒

    反馈

    投诉侵权 举报帖子 免责声明 资源求助

    反馈须知: 切勿滥用举报,任何与举报相关的信息必须属实!

    网站资源

    • 客户端
    • 微信
    • 微博

    QQ|网站地图|Archiver|手机版|小黑屋|多资源网

    多资源网 冀ICP备19023410号-2

    GMT+8, 2020-10-25 09:41 , Processed in 0.187155 second(s), 122 queries , Gzip On.

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