ECharts分析xdebug跟踪日志

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 2015年12月23日 15:36:11 星期三 之前用的是国外的图表工具, 有点麻烦, 文档是英文的, 看着不顺眼, 发现了百度出品的ECharts, 文档比较全, 功能比较多, 做出的图也比较好看, 用起来也比较简单   图注:  I/O密集型: 一次mysql的联结查询的效率分析...

2015年12月23日 15:36:11 星期三

之前用的是国外的图表工具, 有点麻烦, 文档是英文的, 看着不顺眼,

发现了百度出品的ECharts, 文档比较全, 功能比较多, 做出的图也比较好看, 用起来也比较简单

 

图注: 

I/O密集型: 一次mysql的联结查询的效率分析

CPU密集型: 将联结查询分成两次简单查询, 并借助PHP计算得到最终结果的效率分析

 

代码:

  1 <!DOCTYPE html>
  2 <head>
  3     <meta charset="utf-8">
  4     <title>ECharts</title>
  5 </head>
  6 <body>
  7 <?php
  8 function makeData($file)
  9 {
 10     $fp = fopen($file, 'r');
 11     $arrLineData = [];
 12     $arrDetailData = [];
 13     
 14     while(!feof($fp)){
 15         $row = fgets($fp);
 16         $row = trim($row);
 17         $arr_now = preg_split('#\s+#', $row);
 18         
 19         if (count($arr_now) > 2 && is_numeric($arr_now[0])) {
 20             $x = $arr_now[0]*10000; //时间消耗, 变成整数, 单位ms*10
 21             $y = $arr_now[1]/1000; //内存消耗, 缩小数量级, 单位KB
 22             $arrLineData[] = [$x, $y];
 23             
 24             $tmp = [];
 25             $tmp['time_used']     = $arr_now[0];
 26             $tmp['memory_used'] = $arr_now[1];
 27             $tmp['memory_add']     = $arr_now[2];
 28             $tmp['function']     = $arr_now[4];
 29             $tmp['location']     = $arr_now[5];
 30             $key = $x.'_'.$arr_now[1];
 31             $arrDetailData[$key] = $tmp;
 32         }
 33     }
 34     
 35     return [$arrLineData, $arrDetailData];
 36 }
 37 
 38 $cpuData = makeData('./file/trace._test_index_ab_cpu_XDEBUG_TRACE=start_trace.xt');
 39 $ioData = makeData('./file/trace._test_index_ab_io_XDEBUG_TRACE=start_trace.xt');
 40 
 41 ?>
 42     <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
 43     <div id="main" style="height:400px"></div>
 44     <!-- ECharts单文件引入 -->
 45     <script src="./js/echarts-all.js"></script>
 46     <script type="text/javascript">
 47     var cpuData = <?= json_encode($cpuData)?>;
 48     var ioData = <?= json_encode($ioData)?>;
 49     var line1Name = 'CPU密集型';
 50     var line2Name = 'I/O密集型';
 51     
 52     // 基于准备好的dom,初始化echarts图表
 53     var myChart = echarts.init(document.getElementById('main')); 
 54     
 55     option = {
 56     title : {
 57         text: 'PHP效率分析',
 58         //subtext: '纯属虚构'
 59     },
 60     tooltip : {
 61         trigger: 'axis',
 62         axisPointer:{
 63             show: true,
 64             type : 'cross',
 65             lineStyle: {
 66                 type : 'dashed',
 67                 width : 1
 68             }
 69         },
 70         formatter : function (params) {
 71             var x = params.value[0];
 72             var y = params.value[1];
 73             
 74             var key = x+'_'+y*1000;
 75             if (params.seriesName == line1Name) {
 76                 var obj = cpuData[1][key];
 77             } else {
 78                 var obj = ioData[1][key];
 79             }
 80             str = params.seriesName+': <br>';
 81             str += '时间消耗: '+obj.time_used+"s<br>";
 82             str += '内存消耗: '+obj.memory_used/1024+"KB<br>";
 83             str += '内存增量: '+obj.memory_add+"B<br>";
 84             str += '函数调用: '+obj.function+"<br>";
 85             str += '所在行: '+obj.location;
 86             return str;
 87         }
 88     },
 89     dataZoom: {
 90         show: true,
 91         start : 0
 92     },
 93     legend: {
 94         data:[line1Name, line2Name]
 95     },
 96     toolbox: {
 97         show : true,
 98         feature : {
 99             dataView : {show: true, readOnly: true},
100             restore : {show: true},
101             saveAsImage : {show: true}
102         }
103     },
104     calculable : true,
105     xAxis : [
106         {
107             type: 'value',
108             axisLine: {
109                 lineStyle: {
110                     color:'grey',
111                     width:1
112                 }
113             }
114         }
115     ],
116     yAxis : [
117         {
118             type: 'value',
119             axisLine: {
120                 lineStyle: {
121                     color:'grey',
122                     width:1
123                 }
124             }
125         }
126     ],
127     series : [
128         {
129             name:line1Name,
130             type:'line',
131             data:cpuData[0],
132         },
133         {
134             name:line2Name,
135             type:'line',
136             data:ioData[0]
137         }
138     ]
139 };
140 
141         // 为echarts对象加载数据 
142         myChart.setOption(option); 
143     </script>
144 </body>
145 </html>

 

Summer PHP 框架

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
16天前
|
监控 安全 搜索推荐
使用EventLog Analyzer进行日志取证分析
EventLog Analyzer助力企业通过集中采集、归档与分析系统日志及syslog,快速构建“数字犯罪现场”,精准追溯安全事件根源。其强大搜索功能可秒级定位入侵时间、人员与路径,生成合规与取证报表,确保日志安全防篡改,大幅提升调查效率,为执法提供有力证据支持。
|
6月前
|
存储 运维 监控
SelectDB 实现日志高效存储与实时分析,完成任务可领取积分、餐具套装/水杯/帆布包!
SelectDB 实现日志高效存储与实时分析,完成任务可领取积分、餐具套装/水杯/帆布包!
|
6月前
|
SQL 监控 数据挖掘
SLS 重磅升级:超大规模数据实现完全精确分析
SLS 全新推出的「SQL 完全精确」模式,通过“限”与“换”的策略切换,在快速分析与精确计算之间实现平衡,满足用户对于超大数据规模分析结果精确的刚性需求。标志着其在超大规模日志数据分析领域再次迈出了重要的一步。
498 119
|
3月前
|
监控 安全 NoSQL
【DevOps】Logstash详解:高效日志管理与分析工具
Logstash是ELK Stack核心组件之一,具备强大的日志收集、处理与转发能力。它支持多种数据来源,提供灵活的过滤、转换机制,并可通过插件扩展功能,广泛应用于系统日志分析、性能优化及安全合规等领域,是现代日志管理的关键工具。
425 0
|
5月前
|
自然语言处理 监控 安全
阿里云发布可观测MCP!支持自然语言查询和分析多模态日志
阿里云可观测官方发布了Observable MCP Server,提供了一系列访问阿里云可观测各产品的工具能力,包含阿里云日志服务SLS、阿里云应用实时监控服务ARMS等,支持用户通过自然语言形式查询
531 0
阿里云发布可观测MCP!支持自然语言查询和分析多模态日志
|
4月前
|
人工智能 运维 监控
Aipy实战:分析apache2日志中的网站攻击痕迹
Apache2日志系统灵活且信息全面,但安全分析、实时分析和合规性审计存在较高技术门槛。为降低难度,可借助AI工具如aipy高效分析日志,快速发现攻击痕迹并提供反制措施。通过结合AI与学习技术知识,新手运维人员能更轻松掌握复杂日志分析任务,提升工作效率与技能水平。
|
7月前
|
存储 消息中间件 缓存
MiniMax GenAI 可观测性分析 :基于阿里云 SelectDB 构建 PB 级别日志系统
基于阿里云SelectDB,MiniMax构建了覆盖国内及海外业务的日志可观测中台,总体数据规模超过数PB,日均新增日志写入量达数百TB。系统在P95分位查询场景下的响应时间小于3秒,峰值时刻实现了超过10GB/s的读写吞吐。通过存算分离、高压缩比算法和单副本热缓存等技术手段,MiniMax在优化性能的同时显著降低了建设成本,计算资源用量降低40%,热数据存储用量降低50%,为未来业务的高速发展和技术演进奠定了坚实基础。
274 1
MiniMax GenAI 可观测性分析 :基于阿里云 SelectDB 构建 PB 级别日志系统
|
7月前
|
SQL 存储 自然语言处理
让跨 project 联查更轻松,SLS StoreView 查询和分析实践
让跨 project 联查更轻松,SLS StoreView 查询和分析实践
130 1
|
9月前
|
机器学习/深度学习 人工智能 运维
智能日志分析:用AI点亮运维的未来
智能日志分析:用AI点亮运维的未来
2647 15
|
8月前
|
SQL 分布式计算 Serverless
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
172 0