zoukankan      html  css  js  c++  java
  • 扩展实现PHP Benchmark

    一、PHP Benchmark实现思路

    在看Redis慢查询日志实现的过程中,觉得这个功能很有用,能够帮助快速分析出性能问题出处,所以想到为PHP实现这样的功能。

    实现思路也是借鉴Redis对于慢查询的处理流程。(此扩展目前仅支持Linux)


    此扩展的作用是帮助分析执行时间过长的PHP脚本记录的要素有:

    1、脚本执行时间

    2、当前请求的REQUEST数据

    3、当前请求的文件相对路径

    4、当前请求的COOKIES数据

    记录传递的数据是为了模拟出有些情况下,是因为特殊的数据才会出现的性能问题。

    存储的介质选择了Memcache而没有选择文件,是因为不希望可能由磁盘写入带来的瓶颈,同时数据是允许丢失的。

    如果希望持久化,可以通过客户端实现定时存储日志,不需要实时持久化存储。


    实现思路:

    1、设置一个最大脚本超时时间slowlog.slow_maxtime(单位微妙1s=1000000us)

    2、在脚本的Rinit阶段记录当前时间为start,当Rshotdown阶段记录当前时间为end,时间差即为duration执行时间

    其中Rinit、Rshutdown阶段通过下图来理解:



    3、当执行时间duration大于设置的slowlog.slow_maxtime时,进行第四步。

    4、获取memcache键名为slowlog_idx的日志自增ID,将当前的4点记录要素(最开始列出的4要素)存储到slowlog_(自增ID)下,同时将更新slowlog_idx键值为自增ID++。

    此时,如果出现超过大于指定执行时间的脚本,已经被记录在Memcache中。


    二、实现网页客户端脚本帮助分析查看

    从memcache遍历出日志后,通过对数据进行计算再以饼图展现出以文件为单位的平均统计,点击饼图块将显示此文件的详细日志信息。



    三、安装过程

    1、下载扩展源码http://yunpan.cn/Q5AaJjs4kP63x

    2、

    #如果你没有安装memcache,你需要先安装memcache扩展和memcache server
    tar -xvf slowlog.tar
    cd slowlog
    /usr/local/php/bin/phpize #此处需要设置为你的PHP安装目录
    ./configure --with-php-config=/usr/local/php/bin/php-config #此处需要设置为你的PHP安装目录
    make && make install


    3、php.ini中新增

    extension=slowlog.so
    [slowlog]
    slowlog.slow_maxtime=1000000 #表示超时为1s
    slowlog.mem_host=locahost
    slowlog.mem_port=11211

    现在扩展的安装配置已经完成


    4、客户端使用(网页中查看)

    客户端文件在源码包下的client文件夹,拷贝client到站点下,访问http://localhost/client/slowlog.php即可查看慢执行日志。


    注意:如果你的memcache服务器地址不是localhost和端口11211,请自行修改连接信息。



  • 相关阅读:
    nvm切换node失效
    React.memo is not a function
    Path must be a string. Received true
    如何通过node读取excel文件内的数据
    js中四舍五入的方法
    为什么不推荐使用数组的includes方法---记两次includes引起的问题
    改变input复选框样式
    如何使用伪元素扩大按钮可点击区域
    简单实用的纯css按钮效果
    ie6 ie7 ie8 ie9和FireFox Chrome中css区别总结
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3073342.html
Copyright © 2011-2022 走看看