zoukankan      html  css  js  c++  java
  • PHP性能分析

    最终结果展示图:

    图解:响应时间在40ms以内的请求数占请求总量的7%,40到80ms的的请求数占32.9%,依次类推。。。

    性能问题有很多种可能,普通的情况通过xhprof可查得主要的性能损耗。但有些情况却是通过xhprof不能分析出结果。如一个应用有N个URL,其中有一部分处于响应慢,一部分响应快,此时为了找出响应慢的URL就需要对nginx进行分析。

    1:分析nginx日志确定是否存在此类问题。(获取PHP运行时间分布图,使用了shell、php)

    LOGFILE=$1
    if [ $# ne 2 ];then
       ZONESIZE=$2
    else
       ZONESIZE=40
    fi
    cat $LOGFILE | /usr/local/php/bin/php -B "$totaltime = 0; $num = 0; $i = 0; $zonesize = $ZONESIZE;" -R '$t = explode(" ", $argn); if($t["8"] != 200) return ''; $url = $t["6"]; $time = substr(end($t), 1,-1) * 1000; $totaltime += $time; $num++; $timelevel = ceil($time/$zonesize); if($timelevel == 0) return ''; if($timelevel > 10) $timelevel = 10; $ret[$timelevel*$zonesize]++; echo "
    ".$t["0"]."	".$t["3"]."	".$t["6"]."	".substr(end($t), 1,-1);' -E 'echo "
     totaltime:".$totaltime."ms
     num:".$num."
     avg time:".($totaltime/$num)."ms
    " ; ksort($ret); echo "
     饼图数据: 
    "; foreach($ret as $k => $v) {     if($i++ == 9 ) {       echo "["".($k - $zonesize)."ms以上",".$v."]"; } else {echo "["".($k - $zonesize)."-".$k."ms",".$v."],";}} echo "
    ";'
    

        ./tongji.sh {nginx日志绝对路径}  > {保存结果的文件}  

      将饼图的数据复制到Highcharts展示页面左边的代码块,点头部的“Run"可在右册生成开头的饼图。

    结果解读:
       响应时间在160ms以内的请求占总数的75%左右,但所有请求的平均响应时间在210ms(数据部门提供的结果)以上;

    结果分析:
       系统主要是被10%响应超慢的访问拖累;只要解决这10%响应超慢的访问,系统平均响应时间将大幅减小

    2:找出10%响应慢的URL,

      代码略去

  • 相关阅读:
    13 文件操作
    10 dict嵌套与升级
    08 连接和顺序列表
    01 Python 逻辑运算
    了解bordercollapse
    orchard模块编写的错误及其解决办法
    orchard文档之理解内容处理器
    orchard文档之理解数据访问
    orchard文档之orchard工作原理
    orchard文档之创建自定义表单
  • 原文地址:https://www.cnblogs.com/dormscript/p/4787599.html
Copyright © 2011-2022 走看看