先搞个效果图
这个UI是在
https://g2.antv.vision/zh/examples/point/bubble#bubble-image 这个的基础上改的.
另外一个效果图, 如下. 也是在G2的基础上改的
参考了. https://g2.antv.vision/zh/examples/bar/basic#time-bar
有数据才能知道如何分析系统性能. 那么该如何分析呢?
分析整个算法的性能问题点当然方法很多, 但是如果是系统性的算法甚至是分布式系统的算法, 又该如何分析系统性能问题点呢?
我在这里就抛砖引玉了吧.
首先要收集数据, 如果是单个系统,可以用单个类来收集,在代码的相关点上插入性能收集的代码.
先看看怎么用的. 代码如下.
import time
from profile.TaskTimeLine import RecordStart,RecordEnd,InitTimeLine,SaveRecord
def 起床程序(record):
InitTimeLine()
RecordStart( "起床" )
RecordStart( "睁开眼睛" )
time.sleep(1)
RecordEnd( "睁开眼睛" )
RecordStart( "穿衣服" )
time.sleep(1)
RecordEnd( "穿衣服" )
RecordStart( "洗脸" )
time.sleep(1)
RecordEnd( "洗脸" )
RecordStart( "刷牙" )
time.sleep(1)
RecordEnd( "刷牙" )
RecordStart( "吃早餐" )
time.sleep(1)
RecordEnd( "吃早餐" )
RecordEnd( "起床" )
第二步: 在项目的启动目录下新建一个文件 timeline.log 就可以啦.
如果删掉这个文件就不会收集性能数据啦, 而且不怎么影响性能哦,可以忽略不计的影响, 记录的时候判断过了, 如果有这个文件就记录数据, 否则就跳过… 这样我们就可以正常在线上跑的时候也可以用它来收集性能数据而不用考虑会不会影响系统性能.
删掉这个文件就没有记录, 有这个文件则开始记录. 这样就方便多了.
那怎么显示性能数据呢?
记录的数据记录在timeline.log中.我们只需要把内容复制, 然后打开 TaskTimeLine.html 黏贴到文本框中, 然后点击显示数据就可以啦
这个TaskTimeLine.html是直接可以在浏览器中打开的. 不需要新建网站什么的. 双击用谷歌浏览器打开即可. 很轻量很绿色.
如果想收集更多的分布式系统的数据可以用数据库或者其它的内存数据库来收集. 重要的是统一时间点哦…
时间限制我就不写这个代码了. 有兴趣的小伙伴欢迎加入到这个项目中, 一起实现分布式系统的性能数据收集功能
甚至动态在线显示各系统环节执行情况, 在线监控系统运行情况也是可以的哦.
GitHub上的项目地址为: https://github.com/phker/SystemTimeLine 欢迎加入