发明名称 一种基于服务调用拓扑的分布式应用性能监控方法
摘要 本发明公开了一种基于服务调用拓扑的分布式应用性能监控方法,通过监控分布式应用服务的网络调用请求,解析出调用者、被调用者和请求时间,通过建立数学模型,确定服务的处理延时,进一步确定应用的服务调用拓扑。通过应用的服务调用拓扑和服务的延时信息,为运维人员提供可视化的应用状态分析,方便对分布式应用进行调试和性能分析。本发明方法具有通用性,可用于任何分布式应用,且本发明方法是实时的,并不是对收集数据的事后分析,能够及时发现问题和系统瓶颈并反馈给运维人员。本发明方法实现简单,易于操作,具有可扩展性和易于部署的特点,适合为分布式应用提供性能监控。
申请公布号 CN105740133A 申请公布日期 2016.07.06
申请号 CN201610065252.1 申请日期 2016.01.29
申请人 浙江大学 发明人 刘敏献;苌程;尹可挺;王哲;蔡亮;翟晨
分类号 G06F11/34(2006.01)I;G06F11/30(2006.01)I;G06F11/32(2006.01)I 主分类号 G06F11/34(2006.01)I
代理机构 杭州求是专利事务所有限公司 33200 代理人 邱启旺
主权项 一种基于服务调用拓扑的分布式应用性能监控方法,其特征在于,该方法包括以下步骤:步骤1:监控分布式应用服务节点之间的网络调用请求,解析网络调用请求的网络包头部,将发送者、接收者和发生时间作为一条原始数据存储到一个可以快速索引的存储服务器,其中,发送者和接收者以服务节点所在主机IP或者&lt;主机IP,端口Port&gt;标记。步骤2:读取原始数据,分析当前的应用服务调用关系和服务节点的延时,计算出单节点的服务调用关系。具体包含以下步骤:(2.1)初始化系统。设定时间t1、t2,t1&lt;t2,最小窗口参数MinWindowSize,最大窗口参数MaxWindowSize,最大值阈值MaxValHold,最大值个数阈值MaxNumHold,最小可能性MinProb,默认延时时长DefaultDelay,默认超时时长DefaultTimeout以及性能显著下降阈值ADHold。(2.2)通过原始数据的发送者和接收者,查询t1到t2时间段内应用中存在的服务节点。(2.3)遍历步骤2.2查询到的服务节点。当前的服务节点设为node。(2.4)从存储服务器中查询出t1到t2时间段内从node发出和node收到的原始数据。(2.5)对原始数据进行过滤,得到进入node的请求链表InMsg、从node发出的请求链表OutMsg,并计算离散化步长Step;具体包括以下子步骤:(2.5.1)如果node没有服务延时队列,则为node创建服务延时队列;(2.5.2)对原始数据进行过滤:对于从node发出的请求,在这个请求之前合理时间范围内有进入node的请求,那么将从node发出的请求加入OutMsg,对应所有进入node的请求加入InMsg。所述合理时间范围指进入的请求和发出的请求时间差距不超过服务处理的超时时间,也不小于服务的最短处理时间。在node的服务延时队列长度大于等于MinWindowSize时,使用延时的均值与两倍均方差的和作为超时时间,如果延时均值与两倍均方差的差大于0,使用这个值作为最短处理时间,否则使用延时均值的u分之一作为最短处理时间;其中u为[2,10]的整数。在服务延时队列长度小于MinWindowSize时,使用DefaultTimeout作为超时时间,使用p分之DefaultDelay的作为最短处理时间;其中p为[2,10]的整数。(2.5.3)计算离散化步长Step:在node的服务延时队列长度小于MinWindowSize时,取DefaultDelay的k分之一作为Step;在服务延时队列长度大于等于MinWindowSize时,取延时均值的k分之一作为Step,k为大于4的整数。(2.6)计算node的服务延时D,具体包括以下子步骤:(2.6.1)根据Step将InMsg离散化为序列In:以t1为零点,每隔step取一个时间点作为离散点,将这个点前后二分之Step内请求的数量作为离散点对应的值。(2.6.2)按步骤2.6.1所述方法,根据Step将OutMsg离散化为序列Out;(2.6.3)将In和Out带入公式1,计算得到h,并求出h的最大值、正的最大值点的平均值、最大值的个数。<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>h</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><msubsup><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mo>-</mo><mi>&infin;</mi></mrow><mi>&infin;</mi></msubsup><mi>I</mi><mi>n</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>&times;</mo><mi>O</mi><mi>u</mi><mi>t</mi><mrow><mo>(</mo><mi>n</mi><mo>+</mo><mi>k</mi><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000918149400000021.GIF" wi="850" he="75" /></maths>(2.6.4)使用正的最大值点的平均值乘以Step作为服务延时D。(2.7)判断服务延时D是否合理:如果步骤(2.6)计算的h的最大值不小于MaxValHold且最大值的个数不大于MaxNumHold且存在正的最大值点,那么D合理,执行步骤(2.8),否则执行步骤(2.13);(2.8)按照窗口更新node的延时队列:当node的延时队列的长度小于MaxWindowSize时,新计算出的延时入队;当node的延时队列的长度大于等于MaxWindowSize时,最先计算的延时出队,新计算出的延时入队。(2.9)判断node的延时队列的长度是否大于MinWindowSize,是则执行步骤(2.10);否则执行步骤(2.13);(2.10)以node延时队列中的数据为样本,求出均值d和均方差r。如果当前均值d比之前的延时均值增加超过PAHold,则将node、t1、t2、之前的延时均值和当前的延时均值作为一条警报信息向运维人员发送,并存储于存储服务器。(2.11)根据InMsg、OutMsg、d和r求出node的因果路径,并计算每条单节点因果路径的可能性,具体包括以下子步骤:(2.11.1)选取OutMsg中的一条原始数据,设接收者为dst_node,时间为t3。令T=t3‑d,R=ur,1&lt;=u&lt;=2。选出InMsg中时间在(T‑R,min(T+R,t3))区间内的原始数据,设原始数据共N条,设这些记录的发送者为src_node<sub>i</sub>,(其中,1&lt;=i&lt;=K,表示有K个不同的发送者),计算出node的单节点因果路径&lt;src_node<sub>i</sub>,node,dst_node&gt;。(2.11.2)计算单节点因果路径的可能性:如果有n<sub>i</sub>条原始数据的发送者src_node<sub>i</sub>,则单节点因果路径&lt;src_node<sub>i</sub>,node,dst_node&gt;的可能性为n<sub>i</sub>/N。或者按照进入node的时间与T的相隔越短权值越高的方式为每条单节点因果路径赋予权值,最后用发送者src_node<sub>i</sub>的权值的总和与所有权值的总和的比值作为对应单节点因果路径的可能性。(2.12)将可能性大于等于MinProb的因果路径存入存储数据库;(2.13)判断是否有未被遍历的服务节点,是则执行步骤(2.3);否则执行步骤(2.14);(2.14)令td=t2‑t1,更新t1为t2,更新t2为t2+td。执行步骤(2.2)。步骤3:将步骤2计算得到的单节点因果路径组合成服务调用拓扑图,具体包括以下子步骤:(3.1)构造初始图,将从起始节点开始的单节点因果路径加入拓扑图,所述起始节点为分布式应用开始处理请求的服务节点,为每条路径添加标签:因边添加标签T,并设置状态为已使用,果边添加同一标签T,并设置状态为未使用;所述因边为连接单节点因果路径的前两个节点的有向边,所述果边为连接单节点因果路径的后两个节点的有向边;(3.2)从初始图的果边开始层次遍历拓扑图的边,添加单节点因果路径,直到拓扑图延伸到终止节点。所述终止节点为其所有单节点因果路径为XYX模式的节点。设当前的单节点因果路径为ABC,当前节点的遍历过程如下:(3.2.1)如果B为终止节点,则按层次遍历方法遍历下一个节点,否则继续;(3.2.2)如果C在到达边AB的路径上(含节点A)出现过,则按层次遍历方法遍历下一个节点,否则继续;(3.2.3)判断AB是否有未被使用的标签,如果有,设标签为T1,执行步骤(3.2.4);否则执行步骤(3.2.6);(3.2.4)设置BC标签为T1,且设置T1为未使用;(3.2.5)设置AB的标签T1为已使用,按层次遍历方法遍历下一个节点;(3.2.6)创建新标签T2;(3.2.7)设置BC标签为T2,且设置BC的标签T2为未使用;(3.2.8)为AB和到达AB的路径添加标签T2,且设置这些标签为已使用,按层次遍历方法遍历下一个节点。步骤4:根据拓扑图分析系统性能,在服务性能明显下降的情况下将分析结果发送给运维人员。具体包括以下步骤:(4.1)根据步骤3的计算结果,形成服务调用拓扑图的图形化结果,直观地显示出带标签的因果路径、每个服务的延时和每条因果路径的可能性信息;(4.2)根据步骤2中的警报信息,将经过警报发生节点的因果路径标注出来;(4.3)找到整个拓扑图中服务延时最大的节点,并标记为系统瓶颈;(4.4)将步骤(4.1)‑(4.3)的信息发送给运维人员,从而实现分布式应用性能的监控。
地址 310027 浙江省杭州市西湖区浙大路38号