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

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

用鼠标拖动无标题窗口-Delphi资料 在Delphi编程中创建一个启动闪现窗口 在form中想用enter来代替tab,请问如何实现?-Delphi资料 在Listboxes中加背景图-Delphi资料 在Window右下角的添加图标-Delphi资料 在程序中使用自定义的鼠标-Delphi资料 怎样建立简单的任务栏应用程序-Delphi资料 增强DelphiTStatusBar控制 制作Delphi的竖排标签 自适应表单的实现-Delphi资料 COM/DCOM的区别与联系-Delphi资料 CoolBar上控件的排列顺序-Delphi资料 Delphi 4 WebBroker Delphi 中自做动态显示的控件 Delphi3的DBGrid中的下拉列表和查找字段编程方法 DELPHI常见问题 Delphi的竖排标签 DELPHI构件制作方法 DELPHI控件Tweblabel的编制 DELPHI中MEMO组件的光标定位 Delphi中RichEdit的奥妙 Delphi中TApplication类 Delphi中日期时间输入的简洁方法 delphi中怎么调用interbase数据库? Memo的Undo功能-Delphi资料 RECT在Delphi中的灵活使用 StringGrid制作只读列-Delphi资料 TADOQuery下主明细表其属性关系如何设置,如何保存主表和明细表?-Delphi资料 TBatchMove用法-Delphi资料 TMemo的真正插入字符-Delphi资料 TREEVIEW的使用-Delphi资料 今天下午有没有去微软发布会的????马上回答 关于字体问题!请教会者不难者!!!!!!!! 請問怎麼定義小一點得符點數???? ReadFile超时返回什么? 我的机器装了2000server,2000profession 和NT4.0,现在机器空间不够想把nt4.0和2000profession 卸载,请问应该如何进行?? 怎样用PB代码实现在MDI窗口里的 Ctrl + Tab 的功能 ? 如何将静态库加入项目中,有头文件,SETING出也加入,为何说和系统的库重复定义 如何调用非mfc的程序调用mfc下开发的动态连接库, 请问谁有监测图片变化的部分代码?(在线等待) GetCurrentDirectory()?? 用ADo更新图片(bmp,jpg)难道只能将原来的数据记录删除后在添加吗?不能直接更新吗? 请大家帮忙解决一下循环体的问题!!:) 请问oracle 自己带的http server(实际上是apache)如何配置class path 给你100分(OLE) 我在制作一个网络浏览器时遇到一个问题,在线等你的帮助 公司不做软件了,失业了,高兴送分 JNI 中内存管理的问题 ehlib控件的问题,如何在表中的一字段显示一个列表?分可以加,,,在线等 大家帮我 c# 的一大难题? 一定加分! 十万火急~~谁有完整的网站计划书? 能不能给我一份,万分感谢! 高分求教不用ActiveSkin实现金山词霸类窗体和按钮效果。 用delphi编写的dll结果不能调用,谢谢你的回答!!! mscomm控件读写串口的问题 正式加入水园 请教ListView控件的使用。 这里有100分(OLE) 公司不做软件了,失业了,高兴送分 请问,哪有oracle express object 的使用指南下载呀。 急~~~~~~哪里可以找到完整的网站计划书? 告诉我下载地址也可以,非常感谢!!! 急!!!怎样用VBA写一句话,判断word是不是当前活动窗口? CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 的cs.lpszClass内容的不能改变 想了解下深圳的程序元的人工如何??请深圳的朋友介绍下好么?听说一般的都有6K~7K,是不是啊?? 插入表单的问题 SilverStream研讨会及中国CTO李渊明给人的印象 如何打印datawindow,操作如下:对同一个datawindow连续打印,但是每次打印都是不同的数据,espon1600K-III w_mainps.sqlinfo() 这个sqlinfo()可能是什么呢? 安装程序的问题 高分求购: MP3歌词协议 SAMI 小问题 现在163.net 163.com的 smtp服务都需要验证,如何在VB中实现验证才能发出邮件? 女人如何合理利用蟑螂(转) 开发游戏的时候,人物造型是怎么做出来的,3dmax里面吗?就是说人体数据和衣服数据是分开来的? 一个IDL文件的编译问题 请帮个小忙 如何编码实现工作流控制的自动化?(比如VC) vector 分配的内存怎么释放 bcb6 中的 FASTREPORT 的问题,100分送上 ASP中应用Excel遇到的问题 捕捉缓冲区的错误…………,相当急! ???SQL Server VS Windows 98,让我欢喜让我忧。哪位大虾帮我解忧愁??? 水里加几勺盐就能把鸡蛋浮起来 空气的成分是什么? 铜,铁,铝的导热性谁最好? 下列加入盐酸,溶液的PH值不会改变的是( ) a.Zn b.AgNO3 c.Na2CO3 d.NaOH 氯化铁与碳酸钠反应的方程式?还有氯化铁与碳酸氢钠反应的方程式? 人呼吸出的空气的成分【呼出的,要化学式和中文】 下列物质加入稀盐酸中,溶液的PH不会明显改变的是:A AgNO3 B Fe C CuO D NaOH 碳酸钠,氯化铁水解方程式 我们靠什么呼吸 自行车行驶时前后轮的摩擦力方向? 我测盐酸的PH值时为什么是负的是1:3的盐酸 我们常吃的鸡蛋也经常呼吸,一个鸡蛋上有( )个呼吸小眼供它呼吸.A 700左右B 7000左右C 70000左右 在稀盐酸中加入下列物质,溶液的PH值几乎不变的是A.AGNO3B.CACO3.C.KOH.D.CAO 纯盐酸的PH值是多少? 为什么我们人类会呼吸 在稀盐酸中加入下列物质,溶液的ph变化最小的是:AgNO3固体 CaCO3固体,KOH固体,生石灰 在蒸馏水中加下列物质,所得溶液PH值明显升高 A盐酸 B二氧化碳 C二氧化硫D生石灰 为什么SO2不能被生石灰干燥? 用手将一重为5N的物体全部压入水中,物体排开的水重8N,此时物体受到的浮力为 N,用手将一重为5N的物体全部压入水中,物体排开的水重8N,此时物体受到的浮力为N,放手后物体将(选填”“上浮 在稀盐酸加入下列什么物质,溶液PH几乎不变 A.生石灰 B.Caco3 C. koH D . AgNO3 碳酸钠与氯化铁反应 把重5N,体积为0.6dm3 的物体投入水中,若不计阻力,当物体静止时受到的浮力多大 用于检验二氧化碳的实验方法是什么?检验氧气的实验方法是什么?证明水蒸气存在的方法是什么? 碳酸钠和氯化铁反应的现象将碳酸钠溶液放入氯化铁溶液中会出现什么现象呢? 塑料热成型加工的特点有哪些? 碳酸钙不溶于水,为何有碳酸钙溶液的说法,如果有,碳酸钙溶液的PH为多少拜托了各位 哪些盐溶液的PH不是7的,水解是怎么回事 室温时,将xmLpH=a的稀NaOH溶液与ymLpH=b的稀盐酸充分反应.下列关于反应后溶液pH的判断,正确的是有这几个答案A.若x=y,且a+b=14,则pH>7 B.若10x=y,且a+b=13,则pH=7C.若ax=by,且a+b=13, 什么叫金属冷挤压模具和热挤压模具? 什么是等熵效率 向稀盐酸中加入NaOH溶液,溶液的pH会改变吗? 挤压成形、车制、压铸、冲压、机压这5种工艺的特点是什么?麻烦给出相应类型的材料举例.挤压成形、车制、压铸、冲压、机压这5种工艺的特点是什么?麻烦给出相应类型的材料举例.不同类 条件熵的计算步骤一定要举例说明啊,可以追加分的哟!帮我算一下下面图中的条件熵,这个表是判断气象的知识表达系统。论域U由14个气象状态组成,属性有五个,其中包含4个条件属性,分 什么是等熵压缩?什么是低熵压缩?有没有负熵压缩?各代表什么物理含义?此外熵究竟如何理解?如何定义的?请不要在网上复制一大堆没用的,简单明了一点吧. 铝合金2A50,怎样判断该用冷挤压?还是热挤压?根据 变形程度 那么 变形范围是多少呢? 计算呼吸熵生物呼吸作用的底物(有机物)种类及含量的差异,会导致呼吸作用释放的CO2与吸收的O2比发生差异,这可用呼吸熵表示:呼吸熵(RQ)=呼吸作用释放的CO2/呼吸作用吸收的O2,为了测 等熵压缩的定义 一块实心铁球浸没在水中时,受到的浮力为19.6牛求铁块的体积 熵里面的这个是什么啊 怎么算的= = 怎么算啊? 空气的成分是/?初三化学 把体积是100的实心铁块浸没在水中,铁块受到的浮力多少牛(g取10牛/千克)(铁的密度=7,9X10千克/米) 关于熵的计算热机工作于600K和300K的两个热源之间,在一次循环中从高温热源吸热4000J.(1)若该热机为一可逆的卡诺机,每经过一个循环两热源及热机组成系统熵变化了多少?(2)若某热机的循 氯化铁与碳酸钠反应吗若反应写出化学方程式 若不反应说明理由 设计实验证明:我们呼出的气体中含有大量的水蒸气 空气中的水蒸气是由______形成的 求氯化铁和碳酸钠反应的方程式 在PH=1的溶液中有NaCl、Na2CO3 Na2SO4,分析说他们氢离子和碳酸根会生成水和二氧化碳,哪里来的氢离子啊以上三种化学式都没有氢离子啊,为什么说他们氢离子和碳酸根反应呢、?那个氢离子哪来的 有没有等温过程或绝热过程的生活物理应用? 一定量理想气体分别在恒压和恒容下,从T1到T2,.如何证明恒压的熵变是恒容的n倍 均匀蜡烛长20CM密度为0.8×10^3kg/m3,下面粘一小铁块,竖直浮于水面上,上端露出水面1cm,然后点燃1、均匀蜡烛长20CM密度为0.8×10^3kg/m3,下面粘一小铁块,竖直浮于水面上,上端露出水面1cm,然后点燃蜡 水中物体有不受浮力的时候吗 初中物理怎么判断浮力大小 哪种水最好喝?大神们帮帮忙 今天大学物理课 老师一道题想不通 绝热膨胀为什么会等温的 铁的导热性好还是差? 被辣到了,怎么办呢? 将装有水的杯子放入水槽中,则杯子所受的浮力怎么求? 新鲜鸡蛋在水中加盐会浮起来,加糖会怎样呢?如题⊙﹏⊙b汗, 为什么鸡蛋在一只装满水的桶里加很多盐会浮起来? 在一个杯子里装满水把一个球放进去与杯底相贴就是说不受浮力,请问水对球向上的浮力以及球对杯底的压力用公式表示就可以了球就是与杯底无缝接触.不受浮力,要求的是水对球向下的力 铁和大理石哪个导热性强
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘