一. 组件概述

PulseFLow插件端主要完成下面两个方面的功能。

1.1 拦截PHP执行过程 (保障高效)

PulseFlow的第一个部分是PHP扩展,这个PHP扩展的主要功能是拦截PHP脚本在执行过程中的运行信息。目前拦截的信息包括:

  1. 函数名及类名

  2. 函数执行耗时

  3. 函数执行的内存损耗

  4. 函数执行的次数统计

上述的四个指标均指在一个PHP生命周期内。

在拦截执行信息的过程中,为了保障高效率,我们先后调整了两次数据结构,最终在简易的数据结构基础上,借助全局变量的威力,去除了序列化和反序列化过程,大大提高了信息采集的效率。

1.2 发送拦截的性能信息(保障高效稳定)

在 1.1 节中,我们介绍了扩展拦截了一系列的运行信息,但是还需要发送出去这个环节,如何既快速稳定地和信息接收端通信,我们测试了以下方案。

  1. System V Message Queue

  2. Posix Message Queue

  3. Unix Domain Socket

  4. Zero MQ

  5. NanoMsg

  6. Shared Memory

我们在详尽测试了上述六种方案后,为了保证稳定性系统搭建的简易性,我们选择了既安全又快速的System V Message Queue

这是一种 Linux 内核消息队列,速度仅次于共享内存通信,虽然没有共享内存速度快,但是具有很好的安全性 和 队列性,毕竟是线上产品,所以我们在1.0版本中采用此方案。(但是我们保留了共享内存代码分支,后期共享内存版本稳定后再另行推出。)

文档更新时间: 2018-09-07 11:38   作者:李彪