幼儿饰品瑜伽美体用品微软
投稿投诉
微软创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品

巧用ampampquot火焰图ampampquot快速分析链

  本文旨在帮助读者了解什么是全链路追踪以及如何使用工具来分析链路中性能瓶颈。阅读前提
  链路概念和术语基本概念及工具全链路(Trace)追踪分析工具火焰图Span列表服务调用关系图持续时间执行时间全链路追踪
  一般来说,单个追踪(Trace)由各个Span构成,是一棵树或有向无环图(DAG),每一个Span代表Trace中被命名并计时的连续性的执行片段,如下图所示。因为Span的核心是记录对应程序执行片段的开始时间和结束时间,而程序执行片段之间存在调用的父子关系,因而Span逻辑上形成树状结构。
  注:span的父子关系可以通过子span的parentid等于父Span的spanid来关联
  火焰图
  火焰图(FlameGraph)是由Linux性能优化大师BrendanGregg发明的用于分析性能瓶颈的可视化图表,火焰图以一个全局的视野来看待时间分布,它从顶部往底部列出所有可能导致性能瓶颈Span。
  绘制逻辑纵轴(Y轴)代表调用Span的层级深度,用于表示程序执行片段之间的调用关系:上面的Span是下面Span的父Span(数据上也可以通过子span的parentid等于父Span的spanid来关联来对应)。横轴(X轴)代表单个Trace下Span的持续时间(duration),一个格子的宽度越大,越说明该Span的从开始到结束的持续时间较长,可能是造成性能瓶颈的原因。
  显示说明
  火焰图火焰图上的每个Span格子的颜色都对应其服务(service)的颜色。
  所以从火焰图上很直观的可以感知当前的Trace中涉及到有哪些服务请求在执行。(服务的颜色生成逻辑:用户登录到工作空间访问应用性能监测模块时,观测云会根据服务名称自动生成颜色,该颜色的集成会继承到链路查看器等分析页面)Span块默认显示:当前Span的资源(resource)或操作(operation)、持续时间(duration)以及是否存在错误(statuserror)每个Span提示都会显示当前Span对应的资源(resource)、持续时间(duration)以及整体耗时占比
  服务列表
  火焰图右侧的服务列表显示当前Trace内发生请求调用的服务名称、颜色及该服务执行占总执行时间的比率。
  注意:服务名称显示为None的情况则表示当前trace未找到parentid0的顶层Span
  特别说明
  由于多线程或者存在异步任务等原因,所以火焰图在实际绘图时会遇到span之间的关系可以如下:同属于一个parent的兄弟span间可能重叠
  因为存在Span重叠的情况,为了能更直观的看到每个Span及子Span的执行情况,我们前端在绘制火焰图的时候做了一些显示处理,即根据时间空间维度计算Span及子Span在完全不遮挡情况下显示的位置。
  示例1:
  正常Trace,同层级Span时间上不重叠,但跟下属子Span时间有重叠,通过连线的形式关联父子Span之间的关系,下面子Span存在连线的时候也是按照该逻辑做绘图处理。
  示例2:
  异常Trace,仍然存在同层级Span时间上重叠,但是因为实际数据里发现Trace的顶层Span(parentid0)的开始时间(start)大于子Span的开始时间。
  分析逻辑:按照链路中根据程序执行的父子关系判断,父Span的开始时间一定是小于子Span的开始时间的,所以看到该火焰图的显示后,发现父Span跟子Span的服务不是一个时,可以判断两个服务所在服务器的系统时间可能存在不一致的情况,需要先去校验校准后再来分析实际的性能瓶颈。Span列表
  显示说明
  列表全收起状态
  列1:显示服务类型、服务名称、服务颜色及当前服务下是否存在statuserror的Span列2:显示当前服务下面的Span数量列3:显示当前服务下Span持续时间(duration)的平均值列4:显示当前服务下Span的执行时间总和列5:显示当前服务的执行时间占总执行时间的比例
  服务行展开显示
  列1:显示资源名称(resource)、对应服务颜色及当前span是否存在statuserror列2:空列3:显示当前Span持续时间(duration)列4:显示当前Span的执行时间列5:显示当前Span的执行时间占总执行时间的比例服务调用关系图
  显示说明
  显示当前trace下的服务之间的调用关系拓扑
  持续时间
  Span对应程序执行片段的开始时间和结束时间,一般在Trace的数据中用duration字段来做标记。执行时间
  上述的特别说明中有提及到可能会存在父子Span的结束时间不一致的情况,那么执行时间则参考以下逻辑计算得出。
  Span执行时间子span可能在父span结束后才结束
  子Span的执行时间Children的duration
  总执行时间Children的结束时间Parent的开始时间
  父Span的执行时间总执行时间子Span的执行时间子span可能在父span结束后才开始
  子Span的执行时间Children的duration
  总执行时间Children的结束时间Parent的开始时间
  父Span的执行时间总执行时间子Span的执行时间同属于一个parent的兄弟span间可能重叠
  父Span执行时间p(1)p(2)
  Children1Span执行时间c1(1)c1(2)
  Children2Span执行时间c2(1)c2(2)
  注意:因为Children1Span、Children2Span实际执行中时间上存在部分重叠,所以这部分时间由两个Span平分。
  示例说明
  同步任务情况下,Span按照Span1开始Span1结束Span2开始Span2结束。。。顺序执行时,每个Span的执行时间及对应父Span的执行时间计算如下:
  示例1:
  父SpanCouldcareSPAN1
  子SpanMyDQLSPAN2、MyDQLSPAN3、MyDQLSPAN4、MyDQLSPAN5、MyDQLSPAN6、MyDQLSPAN7、MyDQLSPAN8、MyDQLSPAN9、MyDQLSPAN10、MyDQLSPAN11
  计算分析:
  因为所有的子Span都没有再下层级的子Span,所以下图所有的子Span的执行时间等于他们的Span持续时间。父Span因为下面存在子Span的调用所以实际父Span的执行时间需要通过父Span的持续时间减去所有子Span的执行时间获得。
  服务执行时间
  每个服务的执行时间Trace内所有属于该服务的Span执行时间总和
  总执行时间
  总执行时间Trace内Span最后结束的时间Span最开始的时间链路查看分析场景示例采集器配置(主机安装)
  进入DataKit安装目录下的conf。dddtrace目录,复制ddtrace。conf。sample并命名为ddtrace。conf。示例如下:〔〔inputs。ddtrace〕〕DDTraceAgentendpointsregisterbyversionrespectively。Endpointscanbeskippedlistenbyremovethemfromthelist。Defaultvaluesetasbelow。DONOTMODIFYTHESEENDPOINTSifnotnecessary。endpoints〔v0。3traces,v0。4traces,v0。5traces〕customertagsisalistofkeyscontainskeyssetbyclientcodelikespan。SetTag(key,value)thatwanttosendtodatacenter。Thosekeyssetbyclientcodewilltakeprecedenceoverkeysin〔inputs。ddtrace。tags〕。DOT(。)INKEYWILLBEREPLACEDBYDASH()WHENSENDING。customertags〔key1,key2,。。。〕Keepraretracingresourceslistswitch。Ifsomeresourcesarerareenough(notpresendin1hour),thoseresourcewillalwayssendtodatacenteranddonotconsidersamplersandfilters。keeprareresourcefalseBydefaulteveryerrorpresentsinspanwillbesendtodatacenterandomitanyfiltersorsampler。Ifyouwanttogetridofsomeerrorstatus,youcansettheerrorstatuslisthere。omiterrstatus〔404〕Ignoretracingresourcesmaplikeservice:〔resources。。。〕。Theservicenameisthefullservicenameincurrentapplication。Theresourcelistisregularexpressionsusestoblockresourcenames。Ifyouwanttoblocksomeresourcesuniversallyunderallservices,youcansettheservicenameas。Note:doublequotescannotbeomitted。〔inputs。ddtrace。closeresource〕service1〔resource1,resource2,。。。〕service2〔resource1,resource2,。。。〕〔closeresourceunderallservices〕。。。Samplerconfigusestosetglobalsamplingstrategy。samplingrateusedtosetglobalsamplingrate。〔inputs。ddtrace。sampler〕samplingrate1。0〔inputs。ddtrace。tags〕key1value1key2value2。。。Threadsconfigcontrolshowmanygoroutinesanagentcloudstart。bufferisthesizeofjobsbufferingofworkerchannel。threadsisthetotalnumberfogoroutinesatrunningtime。〔inputs。ddtrace。threads〕buffer100threads8Storageconfigalocalstoragespaceinharddirvertocachetracedata。pathisthelocalfilepathusedtocachedata。capacityistotalspacesize(MB)usedtostoredata。〔inputs。ddtrace。storage〕path。ddtracestoragecapacity5120
  配置好后,重启DataKit即可。
  HTTP设置
  如果Trace数据是跨机器发送过来的,那么需要设置DataKit的HTTP设置。
  如果有ddtrace数据发送给DataKit,那么在DataKit的monitor上能看到:
  DDtrace将数据发送给了v0。4traces接口SDK接入(Go示例)
  安装依赖
  安装ddtracegolanglibrary在开发目录下运行gogetvgithub。comDataDogddtracego
  设置DataKit
  需先安装、启动datakit,并开启ddtrace采集器
  代码示例
  以下代码演示了一个文件打开操作的trace数据收集。
  在main()入口代码中,设置好基本的trace参数,并启动trace:packagemainimport(ioioutilostimegopkg。inDataDogddtracego。v1ddtraceextgopkg。inDataDogddtracego。v1ddtracetracer)funcmain(){tracer。Start(tracer。WithEnv(prod),tracer。WithService(testfileread),tracer。WithServiceVersion(1。2。3),tracer。WithGlobalTag(project,addddtraceingolangproject),)endofappexit,makesuretracerstoppeddefertracer。Stop()tick:time。NewTicker(time。Second)defertick。Stop()yourappmainentry。。。for{runApp()runAppWithError()select{casetick。C:}}}funcrunApp(){varerrerrorStartarootspan。span:tracer。StartSpan(get。data)deferspan。Finish(tracer。WithError(err))Createachildofit,computingthetimeneededtoreadafile。child:tracer。StartSpan(read。file,tracer。ChildOf(span。Context()))child。SetTag(ext。ResourceName,os。Args〔0〕)Performanoperation。varbts〔〕bytebts,errioutil。ReadFile(os。Args〔0〕)span。SetTag(filelen,len(bts))child。Finish(tracer。WithError(err))}
  编译运行
  LinuxMac环境:gobuildmain。goomyappDDAGENTHOSTlocalhostDDTRACEAGENTPORT9529。myapp
  Windows环境:gobuildmain。goomyapp。exeenv:DDAGENTHOSTlocalhost;env:DDTRACEAGENTPORT9529;。myapp。exe
  程序运行一段时间后,即可在观测云看到类似如下trace数据:
  Golang程序trace数据展示
  支持的环境变量
  以下环境变量支持在启动程序的时候指定ddtrace的一些配置参数,其基本形式为:DDXXXenvvalueDDYYYenvvalue。myapp注意事项
  这些环境变量将会被代码中用WithXXX()注入的对应字段覆盖,故代码注入的配置,优先级更高,这些ENV只有在代码未指定对应字段时才生效。
  Key
  默认值
  说明
  DDVERSION
  设置应用程序版本,如1。2。3、2022。02。13
  DDSERVICE
  设置应用服务名
  DDENV
  设置应用当前的环境,如prod、preprod等
  DDAGENTHOST
  localhost
  设置DataKit的IP地址,应用产生的trace数据将发送给DataKit
  DDTRACEAGENTPORT
  设置DataKittrace数据的接收端口。这里需手动指定DataKit的HTTP端口(一般为9529)
  DDDOGSTATSDPORT
  如果要接收ddtrace产生的statsd数据,需在DataKit上手动开启statsd采集器
  DDTRACESAMPLINGRULES
  这里用JSON数组来表示采样设置(采样率应用以数组顺序为准),其中samplerate为采样率,取值范围为〔0。0,1。0〕。示例一:设置全局采样率为20:DDTRACESAMPLERATE〔{samplerate:0。2}〕。myapp示例二:服务名通配app1。、且span名称为abc的,将采样率设置为10,除此之外,采样率设置为20:DDTRACESAMPLERATE〔{service:app1。,name:b,samplerate:0。1},{samplerate:0。2}〕。myapp
  DDTRACESAMPLERATE
  开启上面的采样率开关
  DDTRACERATELIMIT
  设置每个golang进程每秒钟的span采样数。如果DDTRACESAMPLERATE已经打开,则默认为100
  DDTAGS
  这里可注入一组全局tag,这些tag会出现在每个span和profile数据中。多个tag之间可以用空格和英文逗号分割,例如layer:api,team:intake、layer:apiteam:intake
  DDTRACESTARTUPLOGS
  true
  开启ddtrace有关的配置和诊断日志
  DDTRACEDEBUG
  false
  开启ddtrace有关的调试日志
  DDTRACEENABLED
  true
  开启trace开关。如果手动将该开关关闭,则不会产生任何trace数据
  DDSERVICEMAPPING
  动态重命名服务名,各个服务名映射之间可用空格和英文逗号分割,如mysql:mysqlservicename,postgres:postgresservicename,mysql:mysqlservicenamepostgres:postgresservicename实际链路数据分析
  1。登录观测云工作空间,查看应用性能监测模块的服务列表,从服务页面已经可以看出browser服务的P90响应时间是比较长的。
  2。点击browser服务名称,查看该服务的概览分析视图,可以看出影响当前服务响应时间的最关键的资源是querydata这个接口,因为这个接口是观测云的一个数据查询接口,所以接下来我们看下这个接口在查询过程当中,到底是因为什么导致耗时较长。
  3。点击资源名称,跳转到查看器,通过点击持续时间倒序查看响应时间的最大值。
  4。点击Span数据,查看分析当前Span在整个链路里面的执行性能和其他相关信息。
  5。点击右上角〔全屏〕模式按钮,放大查看火焰图相关信息。结合整体链路查看,可以看出browser服务在整个链路中的执行时间占比高达96。26,从Span列表也可以得出此结论。根据火焰图的占比和对应的链路详情信息,我们可以总和得出browser的这个querydataSpan在整个执行过程中可以看到resourcettfb(资源加载请求响应时间)耗时400多毫秒,resourcefirstbyte(资源加载首包时间)耗时1。46秒,再结合查看province的地理位置定位是Singapore(新加坡),而我们的站点部署在杭州节点,则可以得出是因为地理位置问题导致数据传输的时间变长从而影响了整个的耗时。
  参考来源:https:www。guance。comlearningarticlesflamegraph01

17道鸡的各种家常菜吃法,像我这样做,好吃美味又下饭老姜云耳焖子鸡原料:去骨子鸡300克,老姜100克,水发云耳50克。调料:油、盐、味精、鸡精、蚝油、料酒、水淀粉、葱段、鲜汤。做法:1将去骨子鸡切成1厘……吴叶彬执导恐龙系列电影龙林逃生2热映电影《龙林逃生2》2021年8月28日在浙江省仙居县开机,经过接近两年时间的摄制,2023年3月28日,在搜狐视频全球首映。搜狐视频电影首页大图推荐,搜狐视频好看榜,上新榜排名……明明直屏更受欢迎,安卓旗舰为什么还在坚持使用曲面屏?头条创作挑战赛文小伊评科技关于直屏好还是曲屏好的争论这几年一直都非常白热化。尤其是在今年,小米首次尝试在自家小米13系列标准版上尝试直屏设计并大受欢迎之后,这……教授谈手机为什么越用越卡全国人大代表、华中科技大学计算机学院教授冯丹:手机越用越慢、卡顿,一个重要原因是手机上的文字、图片、视频越存越多,导致存储访问变慢。安卓手机在存储方面存在一些问题。即使只……中国排球全力出击2022年女排世锦赛,中国女排庆祝胜利。人民视觉世界男排联赛,张景胤强攻。人民视觉广州日报全媒体记者杨敏2024年巴黎奥运会排球项目资格赛将在今年9月、10月……6支球队齐聚邵阳,中国篮球发展联赛邵阳战一触即发!20222023赛季中国篮球发展联赛(CBDL)邵阳站明日在邵阳市体育中心体育馆开赛!!!此前,参加20222023赛季中国篮球发展联赛邵阳站的运……车企氢装上阵,谁会是下一个宁王?在整个汽车行业,以氢作为燃料的燃料电池,虽并未像锂电池一般风光,但也在新能源战略布局中占有不可撼动的地位。近两年各界玩家入局,更是掀起了持续的投资浪潮。正值两会期间,第十……图集张思阳杨泳超领跑花滑全锦赛双人滑短节目王慧蒂贾梓麒张嘉轩图为双人滑组合张轩绮丰闻强在比赛中中国体育讯1月12日,20222023全国花样滑冰锦标赛在承德市冰上运动中心继续进行。在双人滑短节目比赛中,张思阳杨泳超以67。08分排……这个春天,在葫芦古镇感受老关东的人间烟火提起葫芦岛,很多人想到的是海滨城市、气候宜人,风景好、美食多,只有遇到真正的葫芦岛人,才会告诉你这座关外第一城还藏着一座饱含关东风情的葫芦古镇。古朴的民国建筑,特色的非遗……大报看肥城肥桃宴的故事桃子是一种常见的水果,想必很多人都吃过桃子,甚至吃过多个品种的桃子,但是说到用桃做菜,吃过的人恐怕不多。肥城是驰名中外的佛桃之都,这里不但四季有桃,而且桃子个大味美,是历……参保人次近3亿累计保费320亿!惠民保还能火多久我国惠民保总参保人次已近3亿。在发展势头强劲的同时,惠民保也面临着参保率不足、易引发逆选择、参保人获得感有限等问题,影响着它的可持续发展。近日,南开大学卫生经济与医疗保障……恭喜梅西,巴萨着急了!送上两大特权核心地位,莱万态度成关键关于梅西回归巴萨的事情,在突然之间就成为了大家关注的焦点,因为这次巴萨方面也是着急了。考虑到本赛季也即将结束,是时候需要搞定梅西的回归问题了。而这次巴萨方面也直接为梅西送……
NBA好消息勇士夺冠,库里FMVP!火箭交易达成,哈登续约新NBA联盟总决赛终于落下了帷幕,金州勇士队第六场总决赛战胜凯尔特人队,勇士队以总比分42击败绿军,夺得202122赛季的NBA总冠军。恭喜库里,恭喜勇士,库里、克莱汤普森已经收……广西6大怪菜当地人心头爱,外地人难以下咽,有你爱吃的吗?要说中国哪个地方是必去的旅游圣地,广西一定是最佳选择。广西地理环境特殊,山水环绕,风景宁静幽美。去过的人没有不感叹于祖国的好山好水,陶醉在广阔的天地之间的。广西令人……雨水养生重在防湿邪调脾胃好雨知时节,当春乃发生。随风潜入夜,润物细无声。唐杜甫《春夜喜雨》《春夜喜雨》,是唐代诗人杜甫的著名诗篇,抒写了诗人对春夜细雨的无私奉献品质的赞美之情。说到节……热水泡脚虽舒服,为啥医生不建议这6类人泡脚?泡脚或有伤身体老人常说:人之有脚,好似树之有根,在人身体当中占有重要的作用,他能够支撑人体活动,使人行动更加平衡,保证行走能够稳定进行,所以我们更不应该忽略脚部的健康。想必大家都知道热……中国大数据产业白皮书(全国及31省详细数据)来源:中国大数据网大纲目录一、报告介绍实验室介绍大数据产业入库企业认定方法大数据产业入库企业评价体系二、全国情况北上广的大数据企业接近全国一……一忧一喜!前中国一姐02惨败连续止步4强另一金花第27次晋级刚刚过去的女子网坛,刚结束不久的其中的两场比赛,包括了两名中国金花亮相,结果是一喜一忧:WTA125康科德站,王蔷连输两盘02惨败,连续止步4强;ITF美国兰蒂斯维尔W100,……这些画皮女星,素颜是路人甲,妆后个个赛天仙娱乐圈比美从来都很激烈,总是一个赛一个的美,有的女星,想要出人头地,选择医美让自己更夺目,而有的女星,通过化妆让自己的脸更有风格和辨识度。因而往往出现这样一个场景,化完妆……阿娇也不能怪阿sa抢风头!录制浪姐穿成1米5,阿sa把她衬成最近《乘风破浪的姐姐3》人员名单曝光,人员名单上的明星也备受大家的关注,twins姐妹也参加了这次的节目,最近姐姐们进入了紧张的录制节目当中。说起阿娇,离婚后也越来越有事业心了……罚款警示屡禁不止,没有执法权不是景区的免死金牌【品橙旅游】近期,在梵净山石壁上刻字的某男子被罚12万元的新闻登上热搜。十数年前,在风景区石头和长城砖墙上刻字的恶劣旅游行为随处可见,但伴随近些年政策引导,景区对破坏文物……小李金羽再现江湖!单场2球闪耀全场,宛若禁区狐狸相信不少球迷都知道,在武磊之前,我们的中超联赛中有一个非常神奇的本土前锋,他的名字叫作李金羽。他的速度不快,身体也不够强壮,甚至没有出色的身高,但是他就是能够进球,而且他的进球……正式确定!辽篮旧将回归签下三年合同,顶替张镇麟冲击总冠军打卡挑战局目前辽宁男篮正处在风雨飘摇的时刻,作为上赛季的总冠军,这个休赛期辽宁男篮可以说是在阵容方面流失非常的大,到目前为止总经理人选还没有确定,接下来和球员们的谈判也处在一个……中国乒乓球大捷,中国4女将4战全胜,18岁小将陈熠连赢2场双北京时间6月23日消息,2022年国际乒联WTT支线赛奥托塞克站资格赛,结束第三个比赛日的争夺。4位出战的中国女将陈熠、蒯曼、徐奕、韩菲儿,所参加的4场比赛取得全胜。其中,18……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网