说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

LinkedIn分布式实时性能跟踪与效率优化实例

HTML文档下载 WORD文档下载 PDF文档下载
为了实现对多层服务性能分析的需求,Linkedln建立了实时监测系统,本文的重点是围绕inCapacity工具以及从Samza获得的数据,透过使用实时调用关系图进行有关分析。

【编者按】LinkedIn领英作为全球性职业社交网站,为了能更好地服务用户,提供更加稳定可靠的系统访问服务,LinkedIn在监控方面下足了功夫,建立了自己的实时监测系统。近日,LinkedIn资深工程师Cuong Tran发表了一篇博文,阐述了LinkedIn是如何结合工具inCapacity,通过使用调用图来进行有关性能和问题根源的案例分析。

Linkedln(领英)的基础架构是面向服务的,即使是单个PV(页面浏览)请求也会涉及多个下游服务的调用。所以作为开发者来说,应当重视这些服务间的关系以及相互的性能影响。

为了实现对多层服务性能分析的需求,Linkedln建立了实时监测系统,具体请阅读 基于Apache Samza,揭秘LinkedIn架构背后的技术。而本文的重点是围绕inCapacity工具以及从Samza获得的数据,透过使用实时调用关系图进行有关分析。

利用inCapacity进行端对端性能和效率分析

以下是一个从移动端到网站前台服务的请求示例。


该请求会依次地向多个下游服务发出服务调用。根据前述ApacheSamza Blog 里所说,同一向内调用的服务跟踪会被分组然后重编为消息总线上用于实时分析的单一事件。同一个Web页面的请求会被相同的pagekey标记,这样做的目的是使性能和效率分析着眼于Web应用上下文而不是个别的应用。比方说,移动应用和数据库服务的区别。

透过请求ID,inCapacity会对同一向内调用进行跟踪,遍历调用路径,以不同的指标根据具体的应用上下文进行性能分析。这过程中能帮助开发者取得下述几个重要的性能数据:

  • 服务或应用的使用频率;
  • 哪些服务用时最多;
  • APIs的调用频率,以及哪些APIs会对服务造成最大压力。

inCapacity反映的是架构中使用最频繁的情况;因为服务都是有规律地变更,该信息对于查找什么变更会影响或提升性能是很有帮助的。

请看以下一个简单的调用路径图:


  • 调用路径性能:对于每个调用图中的每条调用路径,inCapacity会进行跟踪计数和对每个API调用的返回时间进行记录。如果一个API会进行向下调用,inCapacity会提取出调用等待时间;其结果是API自身延时数据。例如在上图中,Svc_B中的API_B会依次调用API_C1和API_C2。API_B的自身延时不同于从API_B到API_C1和API_C2之间的延时总和。因此,在比较API自身延时和API总延时时,inCapacity能够判别出造成延时的主因来自于自身还是向下调用。沿着调用路径进行API调用和性能跟踪,能够让开发者了解到APIs对页面的依赖以及性能。
  • 服务负载:对于调用路径中的每个服务,inCapacity会对每个页面的每个向内调用进行计数和延迟汇总。由于跟踪数据会被pagekeys进行标记,inCapacity能对请求发起者的负载进行分组,发起者会是页面或应用,而不仅仅是当前调用者。这样一来可以更好地基于页面上下文进行服务负载分析。

Linkedln中,每15分钟会进行页面调用路径聚合计算。因此API的计数和延时结果是每15分钟的总计数和平均延时。

除了进行性能和根源分析,调用图还可以进行web页面效率分析。例如,对页面发出的向下调用进行开销汇总以计算出页面开销。页面的服务开销与服务的页面负载是成比例的,这类似于页面服务总延时的汇总计算。

最后对于能力计划方面,调用图也是能派上用场的。举例来说,如果想在下一季度把PV提高20%,我们需要对硬件配置进行升级评估。又或者是针对新功能事前进行性能和关联服务性能分析。因此需要做好开销和效益间的平衡取舍。

使用inCapacity进行性能分析

进行web页面应用分析时,使用的是一种自上而下分析法,从高阶概要到具体调用路径,最后延伸到随机抽取调用树。

  • 概要视图从总体上显示了应用对服务的依赖度以及服务的使用频率。inCapacity首先显示了使用得最多的服务。


  • 调用路径视图中显示出从初始PV请求到每个下游服务的完整调用路径。开发者可以进行更细粒度的详细评估,例如应用中服务和APIs的依赖以及性能表现。这种广泛性视图能帮助找出被开发者忽略的向下调用问题,例如后端存储慢的问题。inCapacity会对同一调用级别的调用进行堆排序,以最慢->最快的顺序列示出调用路径。排序的依据是API总延时,是调用计数和平均延时的输出结果。


根据上图数据,造成GET /aaa请求响应慢的原因在于对Service_C的调用,即GET /aaa的自身延时慢于等待时间。如果服务的自身延时比向下调用等待时间还长,那么该服务是响应最慢的服务。继续往下看,可见Service_F是响应最慢的服务。

当进行自身延时计算时,inCapacity会对并行的向下调用进行计算。而并行调用重叠的等待时间会被剔除。

  • 单个调用图视图。该视图显示的是一个随机采样调用图。开发者可以依照时间线查看和检验跨数据中心的服务调用次序。在该瀑布试图下,开发者可以找出需要改进的地方以及分析出向下的调用频率和次数是否合理,2个向下调用之间的时延是否可接受的,又或者对这些调用采用并行方式会否会更加高效。


inCapacity允许开发者进行下列两种流量分析:

  • 性能分析:识别出调用服务的页面,所使用的APIs,使用频率,以及相关的服务性能。分析对象可以是向内和向外调用。
  • 依赖分析:找出受APIs调用与否影响最大的页面。

使用inCapacity进行根源分析

要想对Linkedln这样大型的网站进行性能问题的根源分析是有一定困难的;借助inCapacity的调用图性能比较特性则可事半功倍。

在对不同时间段的调用图进行性能对比时,inCapacity首先会根据总延时对调用路径进行堆排序。然后对不同调用级别的路径进行自身延时比较。如果发现自身延值较大,那么该API便是影响调用性能的问题所在。否则,分析程序会进入下级路径然后重新执行上述判断直到完结。

下图显示了如何使用调用图性能比较来进行Service_B服务调用的问题根源分析。


这里根据时间线和当前时间进行了平均自身延时差值比较。第一级的延时是24.4ms,自身延时仅为5.6ms,因此问题出在下一级。利用类似的思路,我们发现Service_D的自身延时达到11.4ms,所以该调用的性能问题出自Service_D。以此继续分析后得知问题根源是DB会话超限。因此,利用inCapacity进行根源探究是非常便捷的。

综述

实时分布式追踪与调用路径在评估Web应用性能方面是不可缺少的。对性能和服务开销的分析不应孤立进行而是进行综合分析。本文结合工具inCapacity,通过使用调用图来进行了有关性能和问题根源的案例分析,希望对开发者有所启发。(编译:伍昆 责编:张红月)

英文来自:Linkedin Engineering

托盘程序详解(二) -VB资料 托盘程序详解(一) -VB资料 我怎样确定我的程序是否在运行?-VB资料 无重复随机数序列产生器 -VB资料 显示打开方式对话框建立文件的关联 -VB资料 显示动画鼠标图标-VB资料 修复VB5启动时可能出现的一个bug 修改IE的环境菜单-VB资料 修改安装向导生成的缺省安装目录 -VB资料 修改屏保口令 -VB资料 修改屏幕保护的口令 -VB资料 旋转字体 -VB资料 延时函数-VB资料 一个关于乘法溢出问题的探讨 -VB资料 一组VB实用小程序 一组VB应用技巧 隐藏和显示任务栏-VB资料 应用 WSH 读写注册表和建立快捷方式 -VB资料 VB用 IIF 和 SWITCH 以精减代码 VB用BASIC语言设计Windows风格的用户接口 VB用Form 的 Mouse_Move事件来检查鼠标是否在窗口内: VB用RND()函数加密 VB用SendKeys来捉屏 用VB4.0制作软件封面 用VB5 对Windows 95 任务栏提示区进行编程 用VB5读写注册表实例 用VB5开发商品软件的经验谈 用VB5设计多功能计时器 用VB5制作文字上卷效果 用VB6.0实现打字效果 用VB编写DirectX7.0游戏(上) 用SetSQLSelect更改dw的sql语句后,如果dw没有检索参数时能行,如果dw有检索参数则返回-1,请问有办法吗解决吗? SQL Server中的datetime类型数据是否能比较大小? Update 时出现 ODBC错误文件被另一线程占用,问题出在那里??? 请问U-C矩阵是什么? 庆祝一下 请教程序组加入程序的问题 老是想来灌水,把这点可用分送光得了,省得挂念 IT老虎,与天为敌快进来,谢谢我只有20多分了,你们一人十分吧,我留点好吧? 如何实现打印,尤其是分页打印? paw_001,paw_001 在马? NetGuardian??哪为兄弟有啊,给我一份copy~~~~~~~~~~~~ 关于自增长字段使用的问题,高手请进 这一贴,分就少点了,就这么多啦 有人能告诉我广东省C程序员与JAVA程序员的薪水比较吗?为什么会有这种差距呢 请问用javaApplet如何控制IE界面? 点对点的讨论 水平考试与资格考试及格分别是多少分? 如何再网页中实现打印功能,份也打印。 我发现了一个网站的BUG,我该怎样进去? 到处都是泡泡,俺看的想吐,晚上再来算了。 怪事, 屏幕变黑白 我的问题_6 MYSQL中like的问题 请教打印预览问题 请问,如果我想把,file edit tools window这个主菜单栏动态去掉,怎么做? 如何用程序代码实现在Memo文本编辑框中被选中的文字加下划线。 怎样分析tcp报文(我很急呀) *.idl文件如何使用? 各位大侠,怎么写一个php在线打分的程序阿? 我测试一下 感兴趣的去试试! IE外壳扩展的程序 Delphi 6.0的一个Bug??? 我怎么把字符串放进缓冲里?急急急!!! 恭喜 zhipop 喜得漂亮的可爱的千金 几个小问题想请教大家 如何将浏览器的地址栏里的IE图标换成自己的图标? r俺明天想去给我的宝马生生级,不算显示器,3000元左右,请各位大侠们赐教该什么配置 2000下写的程序,NT 4.0workstation上为什么不能跑? 启用新主页下载数据窗口编辑器 请教Qbasic中的几个问题..... 用BCB如何向Oracle8.0.5中更新BLOB 用ODBC编程时发现错误:nvarchar 类型无数据类型同其绑定,用CString 出错!如何解决? 救命,救命!!!!!!!!!!!! 【 这两天好像来了很多新人嘛!来报个到吧! 】 请教:如将一个 FormView 的 ScrollBar 去掉 在asp中怎么定义可变长的数组? 关于文本框的问题(你能回答吗?) X档案第三季有一集叫《网络情人》,讲的什么内容? 如何登陆interbase de local server? 确定星座是按农历,还是公历????? 把一个手机变进矿泉水瓶的魔术我看了一个魔术,那个魔术师将一个手机变进了一个完好的矿泉水瓶里,而且瓶子是完好的,现场n个观众检验过的,所以各位谁知道这么变的请教教我, 娃哈哈都有哪些产品 娃哈哈的各系列产品 乐扣塑料杯是pp吗 变魔术怎么把矿泉水瓶的盖子变到矿泉水瓶里?魔术师把瓶盖变进瓶子里边以后,观众是可以检查的?怎么变的 娃哈哈为什么叫娃哈哈? 乐扣杯子是塑料的对身体有害吗? 今天抽完烟扔到地上烟头立起来是什么兆头? 娃哈哈矿泉水瓶,596ml的,有多高?身边没有尺子, 乐扣塑料杯装热水有胶味,泡了很久还是有一点.这杯子能装热水喝吗 抽完烟把烟蒂丢在地上烟头树立起来有什么征兆 矿泉水瓶怎样做娃娃 乐扣水杯是用什么型号的PP材料做成的?聚丙烯(P.P) 是肯定的,问题是那个牌的PP什么型号,为什么材料那么硬还高透明耐高温 香烟烧到只剩烟头那部分后扔到地下后会继续燃烧吗?就是说抽香烟的时候抽到只剩烟头的部分,就是上面的烟草部分全都抽完了,没有弹烟灰,那扔到地上后会继续燃烧吗? 矿泉水瓶手工制作宠物吸水器懒得去买宠物用的吸水器 请问用矿泉水瓶怎么做 就是水倒进去然后瓶盖朝下 只有小狗去舔的时候才会出水 能不能用冰醋酸腐蚀乐扣杯子的PP材质?如题,另外请问,如果杯子中倒入稀释后的冰醋酸,再倒入食用油,可以阻止它挥发吗? 你有21根烟头,知道3个烟头可以卷一根烟,请问21根烟头你能抽几根烟回答7的是- 回答10的,都错了,给你们个提示答案11根,能回答对,然后说出理由的就给分 矿泉水瓶手工制作动物 PP材料的乐扣水杯和PC材料的乐亿多水杯哪个好我要一个可以装开水而且没有气味的 燃烧的烟头碰到水,水平面上得烟纸也会湿,是什么原因. 矿泉水瓶自制沙漏怎么做 乐扣的杯子好么?是塑料的,喝水应该选择乐扣的还是玻璃杯啊?可是现在都说用塑料的好,售货员还说玻璃的过时了 两个完全相同的矿泉水瓶,一个装满沙,另一个装满水,放在同一斜面上滑下,那个瓶 幼儿园自制玩具有哪些在分散活动时玩的,如踩尾巴、跳绳等.是要有自制体育玩具的分散活动.不需要玩法,提供的游戏要多点!谢谢O(∩_∩)~ 乐扣乐扣的 杯子 区别马克陶瓷杯、运动杯、茶水杯...哪个保温效果更好点儿?正品的马克杯225ml的多少钱?PS:乐扣乐扣(lock&lock)Eco环保陶瓷杯SLB003G/370ml(我不是纸杯-时尚环保系列)225ml 和 两个完全相同的矿泉水瓶,一个装满沙,另一个装满水,放在同一斜面上滑下,那个瓶子滚 物理-为什么水放在矿泉水瓶里久了,瓶子会挤压变形? 请问如何洗乐扣的杯子?请问刚买来乐扣的杯子随便洗洗就可以了还是要用洗洁精洗,开水烫之类的.怎样洗完是最干净的?还有上面的一些很讨厌的标签怎么能去除干净啊? 两个相同的矿泉水瓶,一个全装沙,一个全装水,从斜面滑,那个快? 什么样的塑料瓶可以装热水 乐扣乐扣的杯子好用吗? 两个完全相同的矿泉水瓶,一个装沙,一个装水,放在同一斜面上滑下,哪个瓶子滚得比较快 为什么往塑料瓶内倒热水会变形? 乐扣的杯子怎么样 木头放在水里为什么不会沉下去呢? 为何塑料瓶中装热水,塑料瓶会收缩不是热胀冷缩吗 乐扣的杯子好吗? 什么东西放在水里会沉下去 为什么放热水的塑料瓶会变憋 1000毫升等于多少重量的水 该怎么回答,孩子问:“xx为什么不会沉下水?”孩子问我:“木头,塑料,为什么不会下沉,纸张开始浮着,后来为什么下沉?空饭碗浮在水面,装满水为什么会下沉?” 我物理超差,不知怎么回答,孩 向塑料瓶内到热水,为什么瓶子会缩小?不是应该热胀冷缩吗 2000瓦功率的电器应该用多少平方的电线 为什么水里放食盐,鸡蛋不会沉下去? 矿泉水瓶含有致癌物质有人说矿泉水瓶是一次性的,再次利用会产生致癌物质,真的有这回事吗? 功率800瓦的电器工作多长时间消耗1度电 为什么挤矿泉水瓶,矿泉水瓶中的水会上升 有人回答 体积不变的情况下,底面积被挤小了,高度就增大 水面上我想问为什么底面积被挤小,你挤矿泉水瓶,他横向减小,但是纵向增加,好比一个圆盒 手机会释放致癌物质吗 家里能用2000瓦功率的电器吗?我买了个烧烤炉 功率似乎太大了,我用的接线板烧了,后来就没敢再用了.谁知道普通家庭可不可以用2000瓦功率的东西啊?还有是怎么看的,有什么衡量标准的? 天热 喝矿泉水时想到用矿泉水瓶做船 想请教捆扎瓶子的方法 最好有图纸 谢谢! 乐扣乐扣塑料杯有毒吗 多少瓦的电器用一个小时是一度电? 我买了一瓶矿泉水,喝完之后,把热水倒进矿泉水瓶,为什么瓶子会凹进去的?为什么瓶子不会膨胀?我是这样理解的:加了热水之后(没装满瓶子),拧紧瓶盖.瓶内的压强应该是增大啊?那么,大于 乐扣杯子用久了会不会有毒?以前中学化学老师说过的.有些塑料是有毒的.比如 聚苯乙烯、聚氯乙烯.而 聚乙烯 是 可以用来做食品袋的.但是遇到高温还是会释放毒性的.原谅初中老师就讲过这 2000瓦功率,多久需1度电? 怎么让矿泉水瓶盖进矿泉水瓶?还有手机进矿泉水瓶,有达人可指教下如何做到吗? 饮料瓶,比如可口可乐还有矿泉水瓶,这些塑料瓶子可再生吗? 乐扣水杯底部三角形内是数字7,盖子内部三角形是5,盖子上显示pp,请问这水杯能装开水吗, 把手机放到矿泉水瓶的魔术怎么变的? 娃哈哈刚去娃哈哈做客户经理待遇怎样? 假的乐扣杯,底部没有塑料什么标识,这样的杯子有毒吗
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn