CN112328335A - 一种并发请求超时的诊断方法及装置、设备、存储介质 - Google Patents

一种并发请求超时的诊断方法及装置、设备、存储介质 Download PDF

Info

Publication number
CN112328335A
CN112328335A CN202011379546.4A CN202011379546A CN112328335A CN 112328335 A CN112328335 A CN 112328335A CN 202011379546 A CN202011379546 A CN 202011379546A CN 112328335 A CN112328335 A CN 112328335A
Authority
CN
China
Prior art keywords
function
time
determining
time consumption
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202011379546.4A
Other languages
English (en)
Other versions
CN112328335B (zh
Inventor
陈吉
毛伟
周杰
卢道和
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WeBank Co Ltd
Original Assignee
WeBank Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by WeBank Co Ltd filed Critical WeBank Co Ltd
Priority to CN202011379546.4A priority Critical patent/CN112328335B/zh
Publication of CN112328335A publication Critical patent/CN112328335A/zh
Priority to PCT/CN2021/129625 priority patent/WO2022111278A1/zh
Application granted granted Critical
Publication of CN112328335B publication Critical patent/CN112328335B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Telephonic Communication Services (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种并发请求超时的诊断方法及装置、设备、存储介质,该方法包括:并发请求接口函数超时的情况下,确定所述接口函数的超时率,所述接口函数的层级数量大于1;获取第一耗时集,其中,所述第一耗时集包括所述接口函数调用第一级函数的耗时;根据所述超时率和所述第一耗时集,确定第一级函数中的第一待赋权函数集,其中,所述第一待赋权函数集由第一级函数中耗时百分比排序大于等于超时率的函数组成;获取第二耗时集,其中,所述第二耗时集包括所述第一待赋权函数集中的每一函数调用预先设定层级函数的耗时;根据所述第二耗时集,确定导致所述接口函数超时的调用链路;将所述调用链路的末端函数确定为导致所述接口函数超时的函数。

Description

一种并发请求超时的诊断方法及装置、设备、存储介质
技术领域
本申请实施例涉及但不限于金融科技(Fintech)的信息技术,尤其涉及一种并发请求超时的诊断方法及装置、设备、存储介质。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,然而,由于金融行业的安全性、实时性要求,金融科技也对技术提出了更高的要求。金融科技领域下,相关技术中解决并发请求超时的诊断包括两种方法,一种方法为:使用监控平台收集中央处理器(Central Processing Unit,CPU)、Java虚拟机(Java Virtual Machine,JVM)、线程数、中间件堆积数等相关指标;日志平台收集错误日志和开发关键性能指标;Arthas平台收集耗时方法;大数据平台根据监控指标、关键性能指标、耗时方法等数据综合分析,得出场景路线,并根据得到的场景路线在数据库中查找结果集,得到结果集评分最高的性能瓶颈分析结果和对应的解决方案建议。另一种方法为:通过对接口调用过程中产生的日志进行分析,得到接口函数中各个函数调用模块耗时与本次调用时间的占比,得到接口函数中具体哪个函数模块调用耗时最多,从而定位到导致接口调用超时的问题所在。然而,这两种并发请求超时的诊断方法只能跟踪一级方法的调用链路,往往无法精确的定位到深层次的原因,导致诊断结果不准确。
发明内容
有鉴于此,本申请实施例为解决相关技术中存在的至少一个问题而提供一种并发请求超时的诊断方法及装置、设备、存储介质。
本申请实施例的技术方案是这样实现的:
一方面,本申请实施例提供一种并发请求超时的诊断方法,所述方法包括:
并发请求接口函数超时的情况下,确定所述接口函数的超时率,所述接口函数的层级数量大于1;
获取第一耗时集,其中,所述第一耗时集包括所述接口函数调用第一级函数的耗时;
根据所述超时率和所述第一耗时集,确定第一级函数中的第一待赋权函数集,其中,所述第一待赋权函数集由第一级函数中耗时百分比排序大于等于超时率的函数组成;
获取第二耗时集,其中,所述第二耗时集包括所述第一待赋权函数集中的每一函数调用预先设定层级函数的耗时;
根据所述第二耗时集,确定导致所述接口函数超时的调用链路;
将所述调用链路的末端函数确定为导致所述接口函数超时的函数。
又一方面,本申请实施例提供一种并发请求超时的诊断装置,所述装置包括:
第一确定模块,用于并发请求接口函数超时的情况下,确定所述接口函数的超时率,所述接口函数的层级数量大于1;
第一获取模块,用于获取第一耗时集,其中,所述第一耗时集包括所述接口函数调用第一级函数的耗时;
第二确定模块,用于根据所述超时率和所述第一耗时集,确定第一级函数中的第一待赋权函数集,其中,所述第一待赋权函数集由第一级函数中耗时百分比排序大于等于超时率的函数组成;
第二获取模块,用于获取第二耗时集,其中,所述第二耗时集包括所述第一待赋权函数集中的每一函数调用预先设定层级函数的耗时;
第三确定模块,用于根据所述第二耗时集,确定导致所述接口函数超时的调用链路;
第四确定模块,用于将所述调用链路的末端函数确定为导致所述接口函数超时的函数。
再一方面,本申请实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的步骤。
还一方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的步骤。
本申请实施例提供的并发请求超时的诊断方法,在并发请求接口函数超时的情况下,通过确定所述接口函数的超时率,获取所述接口函数调用第一级函数的耗时,确定第一级函数中耗时百分比排序大于等于超时率的函数;通过获取第二耗时集,其中,所述第二耗时集包括所述第一待赋权函数集中的每一函数调用预先设定层级函数的耗时;根据所述第二耗时集,确定导致所述接口函数超时的调用链路。这样,能够在接口压力测试超时的情况下,除了统计第一层级函数的耗时外,还能够统计预先设定层级函数的耗时,并通过统计的耗时信息,准确定位到接口函数调用链路中最有可能导致接口超时的函数位置,给出所有可能导致超时的函数调用链路,避免了相关技术中,只能统计接口函数中一级方法的调用链路而无法具体定位到更深层调用的函数位置的问题。
附图说明
图1为本申请实施例并发请求超时的诊断方法的实现流程示意图;
图2为本申请实施例并发请求超时的诊断方法的实现流程示意图;
图3为本申请实施例并发请求超时的诊断方法的实现流程示意图;
图4为本申请实施例并发请求超时的诊断装置的组成结构示意图;
图5A为本申请实施例并发请求超时的诊断方法的低压力模式下函数调用耗时百分比平均值示意图;
图5B为本申请实施例并发请求超时的诊断方法的低压力模式下函数调用耗时百分比平均值示意图;
图5C为本申请实施例并发请求超时的诊断方法中函数调用链路分析的示意图;
图6为本申请实施例并发请求超时的诊断装置的组成结构示意图;
图7为本申请实施例中计算机设备的一种硬件实体示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图和实施例对本申请的技术方案进一步详细阐述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
如果申请文件中出现“第一/第二”的类似描述则增加以下的说明,在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
下面结合附图和实施例对本申请的技术方案进一步详细阐述。
本申请实施例提供一种并发请求超时的诊断方法,图1为本申请实施例并发请求超时的诊断方法的实现流程示意图,如图1所示,该方法包括:
步骤S101,并发请求接口函数超时的情况下,确定所述接口函数的超时率,所述接口函数的层级数量大于1;
这里,所述接口函数具有接口实现类,所述接口实现类中有子函数,因此所述接口函数的层级数量大于等于1。
这里,所述超时率可以通过请求发送模块确定。在实施过程中,所述请求发送模块可以计算出请求超时的超时率。每一HTTP请求都会有一个自定义的超时时间,超过自定义时间,认为所述请求超时,所述请求发送模块再根据HTTP请求的请求头中记录的每一秒请求超时的个数和每一秒发送的请求的总数计算得到超时率。
在一些实施例中,所述超时率可以通过每一秒请求超时的个数除以每一秒发送的请求的总数得到,即,所述超时率=每一秒请求超时的个数/每一秒发送的请求的总数。
步骤S102,获取第一耗时集,其中,所述第一耗时集包括所述接口函数调用第一级函数的耗时;
在一些实施例中,请求发送模块记录所述接口函数调用第一级函数的耗时。
举例说明,图5A为本申请实施例中函数调用耗时占比示意图,如图5A所示,接口函数f1调用了4个函数f1.1(),f1.2(),f1.3(),f1.4(),所述第一级函数的耗时为函数f1调用这4个函数的耗时。
步骤S103,根据所述超时率和所述第一耗时集,确定第一级函数中的第一待赋权函数集,其中,所述第一待赋权函数集由第一级函数中耗时百分比排序大于等于超时率的函数组成;
在一些实施例中,在向接口发送并发请求的情况下,接口函数的请求超时率可能为0,在接口超时率为0的情况下,不做筛选,所述第一待赋权函数集中包括发送请求的所有函数。
举例说明,向接口发送并发请求的情况下,接口函数的请求超时率可能为0,如图5A所示:函数f1内部调用了4个函数f1.1()、f1.2()、f1.3()和f1.4(),各函数调用耗时占上层函数总耗时的百分比平均值分别是20百分比(%),20%,30%,30%。第一待赋权函数集中包括f1.1(),f1.2(),f1.3(),f1.4()。
步骤S104,获取第二耗时集,其中,所述第二耗时集包括所述第一待赋权函数集中的每一函数调用预先设定层级函数的耗时;
举例说明,在第一待赋权函数集中包括f1.2()和f.13()的情况下,图5C为本申请实施例并发请求超时的诊断方法中函数调用链路分析的示意图,如图5C所示,在预先设定层级为3的情况下,第二耗时集中包括f1.2.n()、f1.3.n()、f1.2.1.n()、f1.3.1.n()和f1.3.3.n()。
步骤S105,根据所述第二耗时集,确定导致所述接口函数超时的调用链路;
在实施过程中,通过第二耗时集,能够确定可能导致接口超时的函数调用链路。
举例说明,如图5C所示,可能导致接口超时的函数调用链路有4种,
链路1:f1()->f1.2()->f1.2.1()->f1.2.1.1();
链路2:f1()->f1.2()->f1.2.1()->f1.2.1.2();
链路3:f1()->f.13()->f1.3.1();
链路4:f1()->f1.3()->f1.3.3()->f1.3.3.1()。
步骤S106,将所述调用链路的末端函数确定为导致所述接口函数超时的函数。
举例说明,如图5C所示,确定出超时链路为链路1:f1()->f1.2()->f1.2.1()->f1.2.1.1()的情况下,f1.2.1.1()为导致调用接口函数超时的函数。
在本申请实施例中,获取第二耗时集,其中,所述第二耗时集包括所述第一待赋权函数集中的每一函数调用预先设定层级函数的耗时;根据所述第二耗时集,确定导致所述接口函数超时的调用链路。这样,能够在接口压测超时的情况下,除了统计第一层级函数的耗时外,还能够统计预先设定层级函数的耗时,并通过统计的耗时信息,准确定位到接口函数调用链路中最有可能导致接口超时的函数位置,给出所有可能导致超时的函数调用链路,避免了相关技术中,只能统计接口函数中一级方法的调用链路而无法具体定位到更深层调用的函数位置的问题。
本申请实施例提供一种并发请求超时的诊断方法,图2为本申请实施例并发请求超时的诊断方法的实现流程示意图,如图2所示,该方法包括:
步骤S201,并发请求接口函数超时的情况下,确定所述接口函数的超时率,所述接口函数的层级数量大于1;
步骤S202,获取第一耗时集,其中,所述第一耗时集包括所述接口函数调用第一级函数的耗时;
步骤S203,根据所述超时率和所述第一耗时集,确定第一级函数中的第一待赋权函数集,其中,所述第一待赋权函数集由第一级函数中耗时百分比排序大于等于超时率的函数组成;
步骤S204,获取第二耗时集,其中,所述第二耗时集包括所述第一待赋权函数集中的每一函数调用预先设定层级函数的耗时;
步骤S205,根据所述第二耗时集,确定导致所述接口函数超时的调用链路;
步骤S206,根据所述第二耗时集中每一第二耗时和与所述第二耗时对应的上一层函数总耗时,确定耗时百分比集;
举例说明,如图5C所示,函数f1.2()调用函数f1.2.1()耗时80ms,函数f1.2()总耗时100ms,可以确定出函数f1.2.1()的耗时百分比为80%。
步骤S207,根据所述耗时百分比集,确定第二待赋权函数集中每一函数的权重值,其中,所述每一函数为所述预先设定层级函数中耗时百分比变化量非零的函数;
在实施过程中,在已知不同并发请求状态下的耗时百分比集的情况下,能够确定出函数在不同并发请求状态下的耗时百分比的变化量,根据所述变化量能够确定出函数的权重值。
步骤S208,根据所述每一函数的权重值,确定超时的函数调用链路分支;
在实施过程中,通过将函数调用链路上的所述每一函数的权重值相乘,可以确定每一链路的权重值;根据权重值的大小,确定每一链路超时的概率;将概率最大的链路确定为超时的函数调用链路分支。
步骤S209,根据所述函数调用链路分支的权重值,确定导致所述接口函数超时的调用链路;
在实施过程中,通过将函数调用链路上的所述每一函数的权重值相乘,可以确定每一链路的权重值;根据权重值的大小,确定每一链路超时的概率;将概率最大的链路确定为超时的函数调用链路分支。
步骤S210,将所述调用链路的末端函数确定为导致所述接口函数超时的函数。
在一些实施例中,所述步骤S209,根据所述函数调用链路分支的权重值,确定导致所述接口函数超时的调用链路,包括:
步骤S2091,将所述函数调用链路分支中每一函数对应的权重值相乘,得到对应的链路权重值;
步骤S2092,将所述链路权重值按照特定顺序排列;
这里,所述特定顺序可以为从大到小进行排序,也可以为从小到大进行排序。
步骤S2093,将满足预设条件的链路权重值对应的函数调用链路分支,确定为所述导致所述接口函数超时的调用链路。
这里,所述预设条件可以为链路权重值从大到小进行排序后,排序第一的链路权重值。
举例说明,如图5C所示,可能导致接口超时的函数调用链路有4种:
链路1:f1()->f1.2()->f1.2.1()->f1.2.1.1();
链路2:f1()->f1.2()->f1.2.1()->f1.2.1.2();
链路3:f1()->f.13()->f1.3.1();
链路4:f1()->f1.3()->f1.3.3()->f1.3.3.1()。
计算得到所述链路1至链路4的链路权重为:链路1权重为0.613*1*0.8=0.4904;链路2权重为0.613*1*0.2=0.1226;链路3权重为0.387*0.64=0.24768;链路4权重为0.387*0.36*1=0.13932。这里可以将所述链路权重值按照从大到小进行排序,将链路1确定为所述超时函数的调用链路。
在本申请实施例中,根据所述耗时百分比集,确定第二待赋权函数集中每一函数的权重值,这样,能够根据实时耗时数据分析来确定函数调用链路分支的权重值无序人工干预,结果准确度更高,避免了相关技术中,由于人工干预多,而产生的人工参数值设置不当的问题,从而避免了结果准确度不高的问题。
本申请实施例提供一种并发请求超时的诊断方法,所述并发请求的请求模式可以包括多种请求模式,例如可以包括第一请求模式和第二请求模式,在实施的过程中,第一请求模式可以为低压力请求模式,第二请求模式可以为高压力请求模式。本实施例以请求模式包括第一和第二请求模式为例进行说明,此时,所述第一耗时集包括第一子耗时和第二子耗时,其中,所述第一子耗时为在所述第一请求模式下所述接口函数调用第一级函数的耗时,所述第二子耗时为在所述第二请求模式下所述接口函数调用第一级函数的耗时。
图3为本申请实施例并发请求超时的诊断方法的实现流程示意图,如图3所示,该方法包括:
步骤S301,在以所述第一请求模式进行并发请求接口函数超时的情况下,确定第一超时率,所述接口函数的层级数量大于1;
这里,所述第一请求模式为低压力模式,所述低压力模式为请求发送模块发送请求线程的并发数量较少的模式。
步骤S302,在以所述第二请求模式进行并发请求接口函数超时的情况下,确定第二超时率;
这里,所述第二请求模式为高压力模式,所述高压力模式为请求发送模块发送请求线程的并发数量较多的模式。
在一些实施例中,所述请求线程的并发数量大于或等于102时,请求线程的并发数量较多。
步骤S303,获取第一耗时集,其中,所述第一耗时集包括所述接口函数调用第一级函数的耗时;
步骤S304,根据所述第一超时率和第一子耗时,确定第一耗时百分比集;
步骤S305,根据所述第二超时率和第二子耗时,确定第二耗时百分比集;
步骤S306,根据所述第一耗时百分比和第二耗时百分比集,确定百分比变化量;
举例说明,对比图5A和图5B,函数f1.2()耗时百分比平均值从20%增加到了35%,增加了15%;函数f1.3()耗时百分比平均值从30%增加到了35%,增加了5%。可以看出,这函数f1.2()和函数f1.3()两个函数的耗时百分比发生了明显的增加,可以认为导致接口调用超时的原因可能出现在对这两个函数的调用过程中。
步骤S307,根据所述百分比变化量,确定第一级函数中的第一待赋权函数集;
其中,所述第一待赋权函数集由第一级函数中耗时百分比排序大于等于超时率的函数组成;举例说明,对比图5A和图5B,所第一待赋权函数集包括:函数f1.2()和函数f1.3()两个函数。
步骤S308,获取第二耗时集,其中,所述第二耗时集包括所述第一待赋权函数集中的每一函数调用预先设定层级函数的耗时;
步骤S309,根据所述第二耗时集,确定导致所述接口函数超时的调用链路;
步骤S310,将所述调用链路的末端函数确定为导致所述接口函数超时的函数。
在一些实施例中,所述步骤S304,根据所述第一超时率和第一子耗时,确定第一耗时百分比,包括:
步骤S3041,根据所述第一超时率和第一子耗时,确定第一请求超时函数集,其中,所述第一请求超时函数集为在所述第一请求模式下第一级函数的请求超时函数集;
在一些实施例中,所述步骤S3041,根据所述第一超时率和第一子耗时,确定第一请求超时函数集,包括:对所述第一子耗时中的每一耗时对应的耗时百分比进行排序;将排序次序小于等于预设次序的耗时百分比对应的函数确定为请求超时函数,其中,所述预设次序为所述第一超时率与所述接口函数调用第一级函数的总数的乘积;根据每一所述请求超时函数,确定第一请求超时函数集。
举例说明,第一超时率为25%,函数f1内部调用了4个函数f1.1(),f1.2(),f1.3(),f1.4(),第一子耗时为函数f1调用所述4个函数的耗时,各函数对应的耗时百分比为20%,20%,20%,40%。从大到小排序后为40%,20%,20%,20%。将排序第一的耗时百分比对应的函数f1.4()确定为请求超时函数,第一请求超时函数集中包括f1.4()。
步骤S3042,确定所述第一请求超时函数集中每一函数的调用耗时占上一层函数调用总耗时的百分比平均值,得到第一耗时百分比集;
所述步骤S305,根据所述第二超时率和第二子耗时,确定第二耗时百分比集,包括:
步骤S3051,根据所述第二超时率和第二子耗时,确定第二请求超时函数集,其中,所述第二子耗时为第二请求模式下接口函数调用的第一级函数的耗时,所述第二请求超时函数集为第二请求模式下第一级函数的请求超时函数集;
在一些实施例中,所述步骤S3051,根据所述第二超时率和第二子耗时,确定第二请求超时函数集,包括:对所述第二子耗时中的每一耗时对应的耗时百分比进行排序;将排序次序小于等于预设次序的耗时百分比对应的函数确定为请求超时函数,其中,所述预设次序为所述第二超时率与所述接口函数调用第一级函数的总数的乘积;根据每一所述请求超时函数,确定第二请求超时函数集。
举例说明,第二超时率为50%,函数f1内部调用了4个函数f1.1(),f1.2(),f1.3(),f1.4(),第二子耗时为函数f1调用所述4个函数的耗时,各函数对应的耗时百分比为10%,20%,30%,40%。从大到小排序后为40%,30%,20%,10%。将排序次序小于等于第二的耗时百分比对应的函数f1.3()和f1.4()确定为请求超时函数,第二请求超时函数集中包括f1.3()和f1.4()。
步骤S3052,确定所述第二请求超时函数集中每一函数的调用耗时占上一层函数调用总耗时的百分比平均值,得到第二耗时百分比集。
举例说明1,第一请求模式为低压力模式,线程数为10,如图5A所示,在第一超时率为0的情况下,函数f1内部调用了4个函数f1.1(),f1.2(),f1.3(),f1.4(),各函数调用耗时占上层函数总耗时的百分比平均值分别是20%,20%,30%,30%。所述第一耗时百分比集为[M1,Ua],其中,M1表示10线程(低压力),Ua表示数组[20%,20%,30%,30%]。
举例说明2,第二请求模式为高压力模式,线程数为100,第二超时率为50%,如图5C所示:函数f1内部调用了4个函数f1.1(),f1.2(),f1.3(),f1.4(),各函数调用耗时占上层函数总耗时的百分比平均值分别是10%,35%,35%,20%。则,第二耗时百分比集为[M2,Ub],其中,M2表示100线程(高压力),Ub表示数组[35%,35%]。
在本申请实施例中,在以所述第一请求模式进行并发请求接口函数超时的情况下,确定第一超时率;在以所述第二请求模式进行并发请求接口函数超时的情况下,确定第二超时率;根据所述第一超时率和第一子耗时,确定第一耗时百分比集;根据所述第二超时率和第二子耗时,确定第二耗时百分比集;根据所述第一耗时百分比集和第二耗时百分比集,确定百分比变化量;根据所述百分比变化量,确定第一级函数中的第一待赋权函数集。这样,能够根据各个函数在不同请求模式下的百分比变化量,确定可能发生请求接口超时的函数,从而能够在不依赖过多的外部系统、例如,特定指标和日志数据的情况下,确定出可能发生请求接口超时的函数,使得整体设计简洁、普适性好,能够适用于更多日志数据补充足的系统。
本申请实施例提供一种并发请求超时的诊断方法,所述第二耗时集包括第三子耗时和第四子耗时,所述第三子耗时为第一请求模式下所述第一待赋权函数集调用预先设定层级函数的耗时,所述第四子耗时为第二请求模式下所述第一待赋权函数集调用预先设定层级函数的耗时,所述耗时百分比集包括第三耗时百分比集和第四耗时百分比集,所述第三耗时百分比集为第三请求超时函数集中每一函数的调用耗时占第一层函数调用总耗时的百分比平均值,所述第四耗时百分比集为第四请求超时函数集中每一函数的调用耗时占第一层函数调用总耗时的百分比平均值,所述第二待赋权函数集包括第一子函数集和第二子函数集,该方法包括:
步骤S401,并发请求接口函数超时的情况下,确定所述接口函数的超时率,所述接口函数的层级数量大于1;
步骤S402,获取第一耗时集,其中,所述第一耗时集包括所述接口函数调用第一级函数的耗时;
步骤S403,根据所述超时率和所述第一耗时集,确定第一级函数中的第一待赋权函数集,其中,所述第一待赋权函数集由第一级函数中耗时百分比排序大于等于超时率的函数组成;
步骤S404,获取第二耗时集,其中,所述第二耗时集包括所述第一待赋权函数集中的每一函数调用预先设定层级函数的耗时;
其中,所述第二耗时集包括第三子耗时和第四子耗时;
步骤S405,根据所述第二耗时集,确定导致所述接口函数超时的调用链路;
步骤S406,根据所述第三子耗时和所述第一待赋权函数的总耗时,确定第三请求超时函数集,其中,所述第三子耗时为第一请求模式下所述第一待赋权函数集调用预先设定层级函数的耗时,所述第三请求超时函数集为第一请求模式下第一待赋权函数调用下一级函数的请求超时函数集;
举例说明,在低压力并发请求的情况下,如图5C所示,第三子耗时包括低压力下函数f1.2.1()、f1.3.1()和f1.3.3()等的耗时信息。所述第一待赋权函数的总耗时包括:低压力下函数f1.2()和f.13()的耗时信息。根据第三子耗时中的耗时信息与第一待赋权函数在低压力下的总耗时中的耗时信息,可以确定出低压力并发请求模式下第一待赋权函数调用下一级函数的请求超时函数集,即可以确定出第三请求超时函数集。
步骤S407,确定所述第三请求超时函数集中每一函数的调用耗时占第一层函数调用总耗时的百分比平均值,得到第三耗时百分比集;
举例说明,如图5C所示,在低压力下,通过函数f1.2.1()与函数f1.2()的比值,即可确定出函数f1.2.1()占第一层函数f1.2()总耗时的百分比平均值。
步骤S408,根据所述第四子耗时和所述第一待赋权函数的总耗时,确定第四请求超时函数集,其中,所述第四子耗时为第二请求模式下所述第一待赋权函数集调用预先设定层级函数的耗时,所述第四请求超时函数集为第二请求模式下第一待赋权函数下一级函数的请求超时函数集;
举例说明,在高压力并发请求的情况下,如图5C所示,所述第四子耗时为高压力下函数f1.2.1()、f1.3.1()和f1.3.3()等的耗时信息。所述第一待赋权函数的总耗时包括:高压力下函数f1.2()和f.13()的耗时信息。根据第四子耗时中的耗时信息与第一待赋权函数在高压力下的总耗时中的耗时信息,可以确定出高压力并发请求模式下第一待赋权函数调用下一级函数的请求超时函数集,即可以确定出第四请求超时函数集。
步骤S409,确定所述第四请求超时函数集中每一函数的调用耗时占第一层函数调用总耗时的百分比平均值,得到第四耗时百分比集;
举例说明,在高压力下,通过函数f1.2.1()与函数f1.2()的比值,即可确定出函数f1.2.1()占第一层函数f1.2()总耗时的百分比平均值。
步骤S410,对比所述第三耗时百分比集和第四耗时百分比集,确定第一子函数集中每一函数的百分比变化量;其中,所述预先设定层级函数的层级数量为2;
举例说明,在所述预先设定层级函数的层级数量为2的情况下,如图5C所示,对比所述第三耗时百分比集和第四耗时百分比集中函数f1.2.1()所在函数层的函数的百分比变化量。
在一些实施例中,可以通过公式(1)确定函数的百分比变化量
Pfn-incre=(Cfn-high*Thigh-Cfn-low*Tlow)/Cfn-low*Tlow (1);
其中,Cfn-high表示函数调用fn()在高压力模式下的耗时百分比平均值;Thigh表示函数f()在发送方高压力模式下的平均耗时;Cfn-low表示函数调用fn()在发送方低压力模式下的耗时占比;Tlow表示函数调用f()在发送方低压力模式下的平均耗时;Pfn-incre表示函数调用fn()在请求发送方高压模式下耗时平均值相对于低压模式下增加的百分比。
步骤S411,根据所述百分比变化量,确定第一子函数集中每一函数的权重值,其中,所述第一子函数集中每一函数为第一待赋权函数下一级函数中所述百分比变化量非零的函数;
在一些实施例中,根据所述百分比变化量,确定第一子函数集中每一函数的权重值,包括:
可以通过公式(2)计算出函数的权重值,
Wfn=Pfn-incre/(Pf1-incre+Pf2-incre+...+Pf3-incre) (2);
其中,Wfn表示函数f()的调用链路分支权重值。
步骤S412,所述根据所述每一函数的权重值,确定超时的函数调用链路分支,包括:根据所述第一待赋权函数集和第一子函数集,确定超时的函数调用链路分支,其中,所述每一函数为所述预先设定层级函数中耗时百分比变化量非零的函数;
举例说明,如图5C所示,第一子函数集可以为f1.2.1()所在函数层的函数。所示超时的函数调用链路分支可以为:
链路1:f1()->f1.2()->f1.2.1();
链路2:f1()->f1.2()->f1.2.1();
链路3:f1()->f.13()->f1.3.1();
链路4:f1()->f1.3()->f1.3.3()。
步骤S413,根据所述函数调用链路分支的权重值,确定导致所述接口函数超时的调用链路;
步骤S414,将所述调用链路的末端函数确定为导致所述接口函数超时的函数。
在一些实施例中,所述方法还包括:
步骤S415,根据所述第三子耗时和所述第三子耗时对应的上一层函数的总耗时,确定第五请求超时函数集,其中,所述第五请求超时函数集为在所述第一请求模式下第一子函数集中函数调用下一级函数的请求超时函数集;所述预先设定层级函数的层级数量为3;
举例说明,在所述预先设定层级函数的层级数量为3的情况下,如图5C所示,所述第三子耗时包括低压力并发请求模式下,函数f1.2.1.1()所在层的函数耗时,所上一层函数的总耗时为函数f1.2.1()所在层函数的总耗时。
步骤S416,确定所述第五请求超时函数集中每一函数的调用耗时占第二层函数调用总耗时的百分比平均值,得到第五耗时百分比集;
举例说明,在低压力并发请求模式下,如图5C所示,所述第五耗时百分比集中包括函数f1.2.1.1()、f1.2.1.2()和f1.3.3.1()的耗时百分比。
步骤S417,根据第四子耗时,确定第六请求超时函数集,其中,所述第六请求超时函数级为第二请求模式下第一子函数集中函数调用下一级函数的请求超时函数集;
举例说明,在所述预先设定层级函数的层级数量为3的情况下,如图5C所示,所述第三子耗时包括高压力并发请求模式下,函数f1.2.1.1()所在层的函数耗时,所上一层函数的总耗时为函数f1.2.1()所在层函数的总耗时。
步骤S418,确定所述第六请求超时函数集中每一函数的调用耗时占第二层函数调用总耗时的百分比平均值,得到第六耗时百分比集;
举例说明,在高压力并发请求模式下,如图5C所示,所述第五耗时百分比集中包括函数f1.2.1.1()、f1.2.1.2()和f1.3.3.1()的耗时百分比。
步骤S419,根据所述第五耗时百分比集和第六耗时百分比集,确定第一子函数集中每一函数的百分比变化量;
步骤S420,根据所述百分比变化量,确定第二子函数集中每一函数的权重值,其中,所述第二子函数集中每一函数为第一子函数集中函数调用的下一级函数中所述百分比变化量非零的函数;
步骤S421,根据所述第一待赋权函数集、第一子函数集和第二子函数集,确定超时的函数调用链路分支。
举例说明,如图5C所示,所述第一待赋权函数集中的函数为:f1.2()和f.13(),所述第一子函数集中的函数为:f1.2.1()、f1.3.1()和f1.3.3();所述第二子函数集中的函数为:f1.2.1.1()、f1.2.1.2()和f1.3.3.1()。由此可以确定,可能导致接口超时的函数调用链路有4种,
链路1:f1()->f1.2()->f1.2.1()->f1.2.1.1();
链路2:f1()->f1.2()->f1.2.1()->f1.2.1.2();
链路3:f1()->f.13()->f1.3.1();
链路4:f1()->f1.3()->f1.3.3()->f1.3.3.1()。
在一些实施例中,在确定能导致接口超时的函数调用链路之后,所述方法还包括:根据函数调用链路的链路权重,确定链路超时概率。
举例说明,根据公式(3)计算链路权重值,
Wchain=W1*W2*...*Wn (3);
其中,Wchain为链路权重值,Wn为链路n的权重值。
所述链路1至链路4的链路权重和超时概率的计算式如式(4)至式(7),
链路1权重:0.613*1*0.8=0.4904≈49.0% (4);
链路2权重:0.613*1*0.2=0.1226≈12.3% (5);
链路3权重:0.387*0.64=0.24768≈24.8% (6);
链路4权重:0.387*0.36*1=0.13932≈13.9%。 (7);
整个链路的权重即代表该链路包含导致接口超时原因的概率。将各链路权重值从大到小排序,输出可能导致超时的链路及可能导致接口超时的函数位置。
在本申请实施例中,一方面,根据所述百分比变化量,确定第一子函数集中每一函数的权重值;根据所述第一待赋权函数集和第一子函数集,确定超时的函数调用链路分支。这样,能够在预先设定层级函数的层级数量为2的情况下,通过为函数设定权值的方式,将可能导致超时的链路及可能导致接口超时的函数位置定位到第一待赋权函数集和第一子函数集所对应的函数层;另一方面,根据所述百分比变化量,确定第二子函数集中每一函数的权重值;根据所述第一待赋权函数集、第一子函数集和第二子函数集,确定超时的函数调用链路分支。这样,能够在预先设定层级函数的层级数量为3的情况下,通过为函数设定权值的方式,将可能导致超时的链路及可能导致接口超时的函数位置定位到第二子函数集所对应的函数层,通过赋权的方法准确定位到接口函数调用链路中最有可能导致接口超时的函数的更深层次的位置。
对被调用接口进行压力检测的应用场景中,当请求发送方发送的并发请求增多时,由于接口收到的并发请求数量过大,导致请求压力增大,被测的接口往往会出现请求接口超时的情况。相关人员需要对超时的原因进行分析诊断,找到产生性能瓶颈的问题,解决所述问题,对性能进行调优。
在实施过程中,接口调用各函数的耗时会随着请求并发量的增大呈线性增长,调用各函数的耗时占上层函数总耗时的比例不会出现较大变化。当到达性能瓶颈,接口请求出现超时,超时的接口请求中调用各函数的耗时占调用上层函数总耗时的比例会与性能正常请求时明显不同,百分比会明显增加。在这种情况下,调用函数耗时的超时极有可能是导致接口处理请求超时的原因。因此,需要一种能够准确定位到调用接口函数链路中最有可能导致接口超时的函数具体位置,并给出可能导致超时的函数调用链路。给相关人员寻找产生性能瓶颈的问题提供参考和指引。
相关技术中,一种方法为:使用监控平台收集中央处理器(Central ProcessingUnit,CPU)、Java虚拟机(Java Virtual Machine,JVM)、线程数、中间件堆积数等相关指标;日志平台收集错误日志和开发关键性能指标;Arthas平台收集耗时方法;大数据平台根据监控指标、关键性能指标、耗时方法等数据综合分析,得出场景路线,并根据得到的场景路线在数据库中查找结果集,得到结果集评分最高的性能瓶颈分析结果和对应的解决方案建议。另一种方法为:通过对接口调用过程中产生的日志进行分析,得到接口函数中各个函数调用模块耗时与本次调用时间的占比,得到接口函数中具体哪个函数模块调用耗时最多,从而定位到导致接口调用超时的问题所在。
由此可见,相关技术在解决接口调用的超时问题时,存在以下的问题:
第一种方法存在两方面的问题:一方面,结果准确性不够。在实施过程中,不同子系统日志打印的关键性能指标不一定相同,不同的性能指标会在场景路线匹配的过程中产生不一致的问题,导致性能瓶颈分析结果准确度出现偏差。此外,结果集匹配评分标准是根据具体测试需求设定的,在测试需求设定的过程中人工设定内容较多,容易引起因测试需求设置不当造成的性能瓶颈分析结果不准确。另一方面,无法定位到具体的异常函数位置。在Arthas平台收集耗时方法的过程中,耗时方法的分析只能跟踪一级方法的调用链路,无法进一步定位到一级方法中所调用的方法以及被调用方法中调用的方法。
第二种方法存在三方面的问题:一方面,耗时统计严重依赖日志,现实中开发人员不太可能把一个接口中所有的函数调用模块的耗时日志打印出来。缺少日志会导致耗时统计方案不可行。另一方面,只统计了接口中一级方法的调用链路。无法具体定位到更深层调用的函数位置。再一方面,该技术统计了所有请求的接口函数内部调用模块的耗时占比。在超时率较低(比如5%)的情况下,异常调用模块的耗时占比可能不会太突出,结果准确度较差。
为解决以上问题,本申请实施例提供了一种并发请求超时的诊断方法,该方法一方面,在接口压测超时的情况下,能准确定位到接口函数调用链路中最有可能导致接口超时的函数具体位置,并给出所有可能导致超时的函数调用链路;另一方面,函数调用链路分支的权重值是根据实时耗时数据分析而来的,无序人工干预,结果准确度高;再一方面,整体设计简洁,不依赖过多的外部系统、特定指标、日志数据,普适性好,适用于各类系统。
本申请实施例提供一种并发请求超时的诊断装置,图4为本申请实施例并发请求超时的诊断装置的组成结构示意图,如图4所示,该装置包括:
请求发送模块41,用于启动指定数量的并发线程,按照指定压力向被测系统45的接口发送请求。收集请求的超时率(s%),并将所述超时率实时发送给耗时数据分析模块43。
Arthas模块42,用于监控和统计指定函数内部各函数调用的耗时,并将所述耗时数据发送到耗时数据分析模块43进行分析。
耗时数据分析模块43,一方面,用于将所述Arthas模块42发送的所述耗时数据按照从大到小的顺序进行排列,得到耗时排行。并根据所述请求发送模块41发送的所述超时率s%,筛选出所述耗时排行前s%的请求,得到耗时数据集,所述耗时数据集中存储了请求超时的函数。在发送方低压力,或者在接口未出现超时的情况下,不对所述请求进行筛选。另一方面,用于对所述耗时数据集进行分析,统计所述耗时数据集中各请求超时的函数调用占所述请求超时的函数的上层函数的调用耗时的百分比,并将[M3,Uc]作为一组数据发送给决策与控制模块44,其中,M3表示请求发送方实时并发线程数(请求方压力),Uc表示各函数调用耗时百分比平均值。
决策与控制模块44,一方面,用于在接收到耗时数据分析模块43传来的[M3,Uc]数据的情况下,对比低压力和高压力下各函数耗时百分比的变化,选出函数调用耗时百分比增加的函数调用,超时原因极有可能来自函数调用耗时百分比增加最多的函数调用。根据耗时百分比的增长数据,给函数调用耗时百分比增加的函数调用链路分支赋权重值。函数调用链路分支对应的权重值越大,越可能是导致函数调用超时的原因。另一方面,用于针对选出的超时函数调用链路分支,向Arthas模块42发送针对超时函数的函数调用耗时监控指令,做更深层的函数调用耗时统计。再一方面,用于重复前述两个过程,直到完成指定层数的函数调用分析。根据给每个函数调用链路分支赋予的权重值,计算每条函数调用链路分支的权重,将所述权重由大到小排列,权重最大的就是最有可能导致超时的函数调用链路分支,超时的原因最可能出现在这条分支末端的函数上。如此,能够定位到导致请求接口超时的函数的具体位置。
本申请实施例提供一种并发请求超时的诊断方法,该方法包括:
步骤S501,请求发送模块以第一请求模式向被测系统的接口发送请求,并确定第一超时率;
步骤S502,请求发送模块将所述第一超时率发送给耗时数据分析模块;
这里,所述第一请求模式为低压力模式,所述低压力模式为请求发送模块发送请求线程的并发数量较少的模式。
在一些实施例中,所述请求线程的并发数量小于102时,请求线程的并发数量较少。
在一些实施例中,所述请求发送模块可以计算出请求超时的超时率。每一HTTP请求都会有一个自定义的超时时间,超过自定义时间,认为所述请求超时,所述请求发送模块根据HTTP请求的请求头中记录的超时的时间、每一秒请求超时的个数和每一秒发送的请求的总数计算得到超时率。
举例说明,请求发送模块先启动较少的线程数量,例如,10个线程,然后以低压力模式向被测系统的接口发送请求,并计算周期时间内的请求超时率s%。
步骤S503,耗时数据分析模块接收所述请求发送模块发送的第一超时率;
步骤S504,耗时数据分析模块根据所述第一超时率与所述函数调用耗时,确定第一请求超时函数集;
这里,在所述第一超时率为S1%的情况下,所述第一请求超时函数集中的元素为耗时排行前S1%的请求,所述耗时排行是将请求耗时超时的函数按照从大到小的顺序进行排列得到的。
步骤S505,耗时数据分析模块确定所述第一请求超时函数集中每一函数的调用耗时占上层函数调用总耗时的百分比平均值,得到第一耗时百分比;
这里,所述第一耗时百分比内容为[M4,Ud],其中,M4表示第一请求发送方实时并发线程数(第一请求方压力),Ud表示各函数调用耗时百分比平均值。
举例说明,耗时数据分析模块根据当前第一超时率S1%,筛选出接口请求耗时排名前S1%的请求。计算一段时间内这部分请求中各函数调用耗时占上层函数调用总耗时的百分比平均值。将M4等于10线程(低压力)对应的各函数调用耗时百分比平均值记录下来。图5A为本申请实施例并发请求超时的诊断方法的低压力模式下函数调用耗时百分比平均值示意图,如图5A所示:函数f1内部调用了4个函数f1.1(),f1.2(),f1.3(),f1.4(),各函数调用耗时占上层函数总耗时的百分比平均值分别是20%,20%,30%,30%。
步骤S506,耗时数据分析模块将所述第一耗时百分比发送给决策与控制模块;
步骤S507,决策与控制模块接收所述耗时数据分析模块发送的第一耗时百分比;
步骤S508,请求发送模块以第二请求模式向被测系统的接口发送请求,并确定第二超时率;
这里,所述第二请求模式为高压力模式,所述高压力模式为请求发送模块发送请求线程的并发数量较多的模式。
在一些实施例中,所述第二请求线程的并发数量大于或等于102时,第二请求线程的并发数量较多。
在一些实施例中,决策与控制模块控制请求发送模块以逐渐增大请求并发线程数(eg.100线程)以高压力模式向被测系统接口发送第二请求。
步骤S509,请求发送模块将所述第二超时率发送给耗时数据分析模块;
步骤S510,耗时数据分析模块接收所述请求发送模块发送的第二超时率;
举例说明,决策与控制模块控制请求发送模块以逐渐增大请求并发线程数例如,100线程,以高压力模式向被测系统接口发送请求,此时接口请求出现较多超时。获取周期时间内的第二超时率S2%。
步骤S511,耗时数据分析模块根据所述第二超时率,确定第二请求超时函数集;
这里,在所述第二超时率为S2%的情况下,所述第二请求超时函数集中的元素为耗时排行前S2%的请求,所述耗时排行是将请求耗时超时的函数按照从大到小的顺序进行排列得到的。
步骤S512,耗时数据分析模块确定所述第二请求超时函数集中每一函数的调用耗时占上层函数调用总耗时的百分比平均值,得到第二耗时百分比;
这里,所述第二耗时百分比内容为[M5,Ue],其中,M5表示第二请求发送方实时并发线程数(第二请求方压力),Ue表示各函数调用耗时百分比平均值。
举例说明,耗时数据分析模块根据当前第二超时率S2%,筛选出接口请求耗时排名前S2%的请求。计算一段时间内这部分请求中各函数调用耗时占上层函数调用总耗时的百分比平均值。将M5等于100线程(高压力)对应的各函数调用耗时百分比平均值记录下来。图5B为本申请实施例并发请求超时的诊断方法的低压力模式下函数调用耗时百分比平均值示意图,如图5C所示:函数f1内部调用了4个函数f1.1(),f1.2(),f1.3(),f1.4(),各函数调用耗时占上层函数总耗时的百分比平均值分别是10%,35%,35%,20%。
步骤S513,耗时数据分析模块将所述第二耗时百分比发送给决策与控制模块;
步骤S514,决策与控制模块接收所述耗时数据分析模块发送的第二耗时百分比;
步骤S515,决策与控制模块对比所述第一耗时百分比和第二耗时百分比,并将函数调用耗时百分比平均值发生变化的函数确定为待赋权函数;
这里,所述待赋权函数为待赋予权重值的函数。
在实施过程中,决策控制模块获取到耗时数据分析模块传来的函数调用耗时占比数据,计算请求发送模块分别以高压力模式和低压力模式给被测系统的接口发送请求时,各函数调用耗时百分比平均值的变化。
在实施过程中,随着发送方发送的请求数量增多,接口内部各函数调用耗时也会线性增加,但各函数调用耗时相对总耗时占比基本不变。在接口请求超时的情况下,接口内部各函数调用耗时占比会与正常请求时明显不同,表现为调用耗时明显增加。
举例说明,对比图5A和图5B,函数f1.2()耗时百分比平均值从20%增加到了35%,增加了15%;函数f1.3()耗时百分比平均值从30%增加到了35%,增加了5%。可以看出,这函数f1.2()和函数f1.3()两个函数的耗时百分比发生了明显的增加,可以认为导致接口调用超时的原因可能出现在对这两个函数的调用过程中。决策与控制模块会给所述两个调用百分比平均值增长的函数赋予权重。
步骤S516,决策与控制模块确定所述待赋权函数的权重;
在一些实施例中,所述步骤S516,确定所述待赋权函数的权重,包括:
步骤S517,决策与控制模块确定所述待赋权函数的耗时百分比平均值的变化量;
在一些实施例中,所述待赋权函数的耗时百分比平均值的变化量可以通过公式(8)计算,
Pfn-incre=(Cfn-high*Thigh-Cfn-low*Tlow)/Cfn-low*Tlow (8);
其中,Cfn-high表示函数调用fn()在高压力模式下的耗时百分比平均值;Thigh表示函数f()在发送方高压力模式下的平均耗时;Cfn-low表示函数调用fn()在发送方低压力模式下的耗时占比;Tlow表示函数调用f()在发送方低压力模式下的平均耗时;Pfn-incre表示函数调用fn()在请求发送方高压模式下耗时平均值相对于低压模式下增加的百分比。
举例说明,在如图5A和图5B中,函数f1.2()耗时增加百分比为式(9),
Pf1.2()=(3000*35%-500*20%)/500*20%=950%(9);
函数f1.3()耗时增加百分比为式(10),
Pf1.3()=(3000*35%-500*30%)/500*30%=600%(10);
步骤S518,根据耗时增加百分比,确定函数调用链路分支的权重值;
在一些实施例中,可以通过公式(11)进行计算,
Wfn=Pfn-incre/(Pf1-incre+Pf2-incre+...+Pf3-incre) (11);
其中,Wfn表示函数f()的调用链路分支权重值。
举例说明,在如图5A和图5B中,根据函数f1.2()耗时增加百分比,通过公式(11)计算函数调用链路分支权重值,可以得到式(12),
Wf1.2()=950%/(950%+600%)=0.613 (12);
根据函数f1.3()耗时增加百分比,通过公式(11)计算函数调用链路分支权重值,可以得到式(13),
Wf1.3()=600%/(950%+600%)=0.387 (13);
在一些实施例中,函数调用链路分支权重值越大,导致超时的原因越可能出现在这个函数中。
步骤S519,决策与控制模块向Arthas模块发送对所述待赋权函数的耗时统计指令;
这里,所述Arthas是一个开源的Java语言诊断工具,可以帮助开发测试人员全局时间查看系统运行状态、JVM(Java虚拟机)实时运行状态、生成CPU热点火焰图、方法执行调用监控等。Arthas支持JDK6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的自动补全功能,能够方便进行问题的定位和诊断。
这里,所述耗时统计指令用于对所述待赋权函数的内部函数进行调用耗时统计。
在一些实施例中,在向模块发送对这两个函数的内部函数调用耗时统计之后,重复步骤S505到步骤S519,进行第二级函数的调用耗时分析。由用户配置调用跟踪的级数,假设跟踪级数设为3,则可能得到结果如图5C所示。
举例说明,图5C为本申请实施例函数调用链路分析的示意图,如图5C所示,可能导致接口超时的函数调用链路有4种,
链路1:f1()->f1.2()->f1.2.1()->f1.2.1.1();
链路2:f1()->f1.2()->f1.2.1()->f1.2.1.2();
链路3:f1()->f.13()->f1.3.1();
链路4:f1()->f1.3()->f1.3.3()->f1.3.3.1()。
在链路3中,f1.3.1.1()没有标注权重值,是由于函数f1.3.1.1()在请求发送方高压和低压模式下耗时的差值小于5%。此时不认为是这个函数调用导致超时,因此不给函数调用分支f1.3.1.1()赋函数调用链路分支权重值。函数f1.3.1()只有函数f1.3.1.1()这一个函数调用,排除函数调用对超时的影响,问题只可能出在函数f1.3.1()本身的代码,因此函数f1.3.1()是链路3的调用末端函数。
步骤S520,决策与控制模块根据函数调用链路的链路权重,确定链路超时概率。
举例说明,根据公式(14)计算链路权重值,
Wchain=W1*W2*...*Wn (14);
其中,Wchain为链路权重值,Wn为链路n的权重值。
所述链路1至链路4的链路权重和超时概率的计算式如式(15)至式(18),
链路1权重:0.613*1*0.8=0.4904≈49.0% (15);
链路2权重:0.613*1*0.2=0.1226≈12.3% (16);
链路3权重:0.387*0.64=0.24768≈24.8% (17);
链路4权重:0.387*0.36*1=0.13932≈13.9%。 (18);
整个链路的权重即代表该链路包含导致接口超时原因的概率。将各链路权重值从大到小排序,输出可能导致超时的链路及可能导致接口超时的函数位置。
从式(15)至式(18)可以看出,接口超时原因有49.0%的概率出现在链路1这条函数调用链路中,因此推荐开发测试人员优先去查链路1,在链路1的末端函数f1.2.1.1()中找原因。如果相关人员确定了问题不出现在链路1,则按照权重由高到低依次排查其他可能调用链路。
基于前述的实施例,本申请实施例提供一种并发请求超时的诊断装置,该装置包括所包括的各模块、以及各模块所包括的各单元,以及各单元所包括的各子单元可以通过计算机设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)或现场可编程门阵列(FPGA)等。
图6为本申请实施例并发请求超时的诊断装置的组成结构示意图,如图6所示,所述装置600包括第一确定模块601、第一获取模块602、第二确定模块603、第二获取模块604、第三确定模块605和第四确定模块606,其中:
第一确定模块601,用于并发请求接口函数超时的情况下,确定所述接口函数的超时率,所述接口函数的层级数量大于1;
第一获取模块602,用于获取第一耗时集,其中,所述第一耗时集包括所述接口函数调用第一级函数的耗时;
第二确定模块603,用于根据所述超时率和所述第一耗时集,确定第一级函数中的第一待赋权函数集,其中,所述第一待赋权函数集由第一级函数中耗时百分比排序大于等于超时率的函数组成;
第二获取模块604,用于获取第二耗时集,其中,所述第二耗时集包括所述第一待赋权函数集中的每一函数调用预先设定层级函数的耗时;
第三确定模块605,用于根据所述第二耗时集,确定导致所述接口函数超时的调用链路;
第四确定模块606,用于将所述调用链路的末端函数确定为导致所述接口函数超时的函数。
在一些实施例中,所述第三确定模块,包括第一确定单元、第二确定单元、第三确定单元和第四确定单元,其中:第一确定单元,用于根据所述第二耗时集中每一第二耗时和与所述第二耗时对应的上一层函数总耗时,确定耗时百分比集;第二确定单元,用于根据所述耗时百分比集,确定第二待赋权函数集中每一函数的权重值,其中,所述每一函数为所述预先设定层级函数中耗时百分比变化量非零的函数;第三确定单元,用于根据所述每一函数的权重值,确定超时的函数调用链路分支;第四确定单元,用于根据所述函数调用链路分支的权重值,确定导致所述接口函数超时的调用链路。
在一些实施例中,所述第四确定单元,包括乘积子单元、排序子单元和第一确定子单元,其中:乘积子单元,用于将所述函数调用链路分支中每一函数对应的权重值相乘,得到对应的链路权重值;排序子单元,用于将所述链路权重值按照特定顺序排列;第一确定子单元,用于将满足预设条件的链路权重值对应的函数调用链路分支,确定为所述导致所述接口函数超时的调用链路超时函数的调用链路。
在一些实施例中,所述第一确定模块601,包括第五确定单元和第六确定单元,其中:第五确定单元,用于在以所述第一请求模式进行并发请求接口函数超时的情况下,确定第一超时率;第六确定单元,用于在以所述第二请求模式进行并发请求接口函数超时的情况下,确定第二超时率。所述第二确定模块603,包括第七确定单元、第八确定单元、第九确定单元和第十确定单元,其中:第七确定单元,用于根据所述第一超时率和第一子耗时,确定第一耗时百分比集;第八确定单元,用于根据所述第二超时率和第二子耗时,确定第二耗时百分比集;第九确定单元,用于根据所述第一耗时百分比集和第二耗时百分比集,确定百分比变化量;第十确定单元,用于根据所述百分比变化量,确定第一级函数中的第一待赋权函数集。
在一些实施例中,所述第七确定单元,包括第二确定子单元、第三确定子单元、第四确定子单元、第五确定子单元和第六确定子单元,其中:第二确定子单元,用于根据所述第一超时率和第一子耗时,确定第一请求超时函数集,其中,所述第一请求超时函数集为在所述第一请求模式下第一级函数的请求超时函数集;第三确定子单元,用于确定所述第一请求超时函数集中每一函数的调用耗时占上一层函数调用总耗时的百分比平均值,得到第一耗时百分比集;
所述第八确定单元,包括第四确定子单元和第五确定子单元,其中:第四确定子单元,用于根据所述第二超时率和第二子耗时,确定第二请求超时函数集,其中,所述第二子耗时为第二请求模式下接口函数调用的第一级函数的耗时,所述第二请求超时函数集为第二请求模式下第一级函数的请求超时函数集;第五确定子单元,用于确定所述第二请求超时函数集中每一函数的调用耗时占上一层函数调用总耗时的百分比平均值,得到第二耗时百分比集。
在一些实施例中,所述第一确定单元,包括第六确定子单元、第七确定子单元、第八确定子单元和第九确定子单元,其中:第六确定子单元,用于根据所述第三子耗时和所述第一待赋权函数的总耗时,确定第三请求超时函数集,其中,所述第三子耗时为第一请求模式下所述第一待赋权函数集调用预先设定层级函数的耗时,所述第三请求超时函数集为第一请求模式下第一待赋权函数调用下一级函数的请求超时函数集;第七确定子单元,用于确定所述第三请求超时函数集中每一函数的调用耗时占第一层函数调用总耗时的百分比平均值,得到第三耗时百分比集;第八确定子单元,用于根据所述第四子耗时和所述第一待赋权函数的总耗时,确定第四请求超时函数集,其中,所述第四子耗时为第二请求模式下所述第一待赋权函数集调用预先设定层级函数的耗时,所述第四请求超时函数集为第二请求模式下第一待赋权函数下一级函数的请求超时函数集;第九确定子单元,用于确定所述第四请求超时函数集中每一函数的调用耗时占第一层函数调用总耗时的百分比平均值,得到第四耗时百分比集。
在一些实施例中,所述第二确定单元,包括第十确定子单元、第十一确定子单元和第十二确定子单元,其中:第十确定子单元,用于对比所述第三耗时百分比集和第四耗时百分比集,确定第一子函数集中每一函数的百分比变化量;第十一确定子单元,用于根据所述百分比变化量,确定第一子函数集中每一函数的权重值,其中,所述第一子函数集中每一函数为第一待赋权函数下一级函数中所述百分比变化量非零的函数;第十二确定子单元,用于所述根据所述每一函数的权重值,确定超时的函数调用链路分支,包括:根据所述第一待赋权函数集和第一子函数集,确定超时的函数调用链路分支。
在一些实施例中,所述第二确定单元,还包括第十三确定子单元、第十四确定子单元和第十五确定子单元,其中:第十三确定子单元,用于根据所述第五耗时百分比集和第六耗时百分比集,确定第一子函数集中每一函数的百分比变化量;第十四确定子单元,用于根据所述百分比变化量,确定第二子函数集中每一函数的权重值,其中,所述第二子函数集中每一函数为第一子函数集中函数调用的下一级函数中所述百分比变化量非零的函数;第十五确定子单元,用于所述根据所述每一函数的权重值,确定超时的函数调用链路分支,包括:根据所述第一待赋权函数集、第一子函数集和第二子函数集,确定超时的函数调用链路分支。
在一些实施例中,所述第二确定单元,还包括第十六确定子单元、第十七确定子单元、第十八确定子单元和第十九确定子单元,其中:第十六确定子单元,用于根据所述第三子耗时和所述第三子耗时对应的上一层函数的总耗时,确定第五请求超时函数集,其中,所述第五请求超时函数集为在所述第一请求模式下第一子函数集中函数调用下一级函数的请求超时函数集;第十七确定子单元,用于确定所述第五请求超时函数集中每一函数的调用耗时占第二层函数调用总耗时的百分比平均值,得到第五耗时百分比集;第十八确定子单元,用于根据第四子耗时,确定第六请求超时函数集,其中,所述第六请求超时函数级为第二请求模式下第一子函数集中函数调用下一级函数的请求超时函数集;
第十九确定子单元,用于确定所述第六请求超时函数集中每一函数的调用耗时占第二层函数调用总耗时的百分比平均值,得到第六耗时百分比集。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的并发请求超时的诊断方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
对应地,本申请实施例提供一种计算机设备,包括存储器和处理器所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的步骤。
对应地,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的步骤。
这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,图7为本申请实施例中计算机设备的一种硬件实体示意图,如图7所示,该计算机设备700的硬件实体包括:处理器701、通信接口702和存储器703,其中
处理器701通常控制计算机设备700的总体操作。
通信接口702可以使计算机设备通过网络与其他终端或服务器通信。
存储器703配置为存储由处理器701可执行的指令和应用,还可以缓存待处理器701以及计算机设备700中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random AccessMemory,RAM)实现。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (12)

1.一种并发请求超时的诊断方法,其特征在于,所述方法包括:
并发请求接口函数超时的情况下,确定所述接口函数的超时率,所述接口函数的层级数量大于1;
获取第一耗时集,其中,所述第一耗时集包括所述接口函数调用第一级函数的耗时;
根据所述超时率和所述第一耗时集,确定第一级函数中的第一待赋权函数集,其中,所述第一待赋权函数集由第一级函数中耗时百分比排序大于等于超时率的函数组成;
获取第二耗时集,其中,所述第二耗时集包括所述第一待赋权函数集中的每一函数调用预先设定层级函数的耗时;
根据所述第二耗时集,确定导致所述接口函数超时的调用链路;
将所述调用链路的末端函数确定为导致所述接口函数超时的函数。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第二耗时集,确定导致所述接口函数超时的调用链路,包括:
根据所述第二耗时集中每一第二耗时和与所述第二耗时对应的上一层函数总耗时,确定耗时百分比集;
根据所述耗时百分比集,确定第二待赋权函数集中每一函数的权重值,其中,所述每一函数为所述预先设定层级函数中耗时百分比变化量非零的函数;
根据所述每一函数的权重值,确定超时的函数调用链路分支;
根据所述函数调用链路分支的权重值,确定导致所述接口函数超时的调用链路。
3.根据权利要求2所述的方法,所述根据所述函数调用链路分支的权重值,确定导致所述接口函数超时的调用链路,包括:
将所述函数调用链路分支中每一函数对应的权重值相乘,得到对应的链路权重值;
将所述链路权重值按照特定顺序排列;
将满足预设条件的链路权重值对应的函数调用链路分支,确定为所述导致所述接口函数超时的调用链路。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述并发请求模式包括第一请求模式和第二请求模式,所述第一耗时集包括第一子耗时和第二子耗时,其中,所述第一子耗时为在所述第一请求模式下所述接口函数调用第一级函数的耗时,所述第二子耗时为在所述第二请求模式下所述接口函数调用第一级函数的耗时;
所述并发请求接口函数超时的情况下,确定所述接口函数的超时率,包括:
在以所述第一请求模式进行并发请求接口函数超时的情况下,确定第一超时率;
在以所述第二请求模式进行并发请求接口函数超时的情况下,确定第二超时率;
对应地,所述根据所述超时率和所述第一耗时集,确定第一级函数中的第一待赋权函数集,包括:
根据所述第一超时率和第一子耗时,确定第一耗时百分比集;
根据所述第二超时率和第二子耗时,确定第二耗时百分比集;
根据所述第一耗时百分比集和第二耗时百分比集,确定百分比变化量;
根据所述百分比变化量,确定第一级函数中的第一待赋权函数集。
5.根据权利要求4所述的方法,其特征在于,所述根据所述第一超时率和第一子耗时,确定第一耗时百分比集,包括:
根据所述第一超时率和第一子耗时,确定第一请求超时函数集,其中,所述第一请求超时函数集为在所述第一请求模式下第一级函数的请求超时函数集;
确定所述第一请求超时函数集中每一函数的调用耗时占上一层函数调用总耗时的百分比平均值,得到第一耗时百分比集;
所述根据所述第二超时率和第二子耗时,确定第二耗时百分比集,包括:
根据所述第二超时率和第二子耗时,确定第二请求超时函数集,其中,所述第二子耗时为第二请求模式下接口函数调用的第一级函数的耗时,所述第二请求超时函数集为第二请求模式下第一级函数的请求超时函数集;
确定所述第二请求超时函数集中每一函数的调用耗时占上一层函数调用总耗时的百分比平均值,得到第二耗时百分比集。
6.根据权利要求4所述的方法,其特征在于,所述第二耗时集包括第三子耗时和第四子耗时,所述耗时百分比集包括第三耗时百分比集和第四耗时百分比集,所述根据所述第二耗时集中每一第二耗时和与所述第二耗时对应的上一层函数总耗时,确定耗时百分比集,包括:
根据所述第三子耗时和所述第一待赋权函数的总耗时,确定第三请求超时函数集,其中,所述第三子耗时为第一请求模式下所述第一待赋权函数集调用预先设定层级函数的耗时,所述第三请求超时函数集为第一请求模式下第一待赋权函数调用下一级函数的请求超时函数集;
确定所述第三请求超时函数集中每一函数的调用耗时占第一层函数调用总耗时的百分比平均值,得到第三耗时百分比集;
根据所述第四子耗时和所述第一待赋权函数的总耗时,确定第四请求超时函数集,其中,所述第四子耗时为第二请求模式下所述第一待赋权函数集调用预先设定层级函数的耗时,所述第四请求超时函数集为第二请求模式下第一待赋权函数下一级函数的请求超时函数集;
确定所述第四请求超时函数集中每一函数的调用耗时占第一层函数调用总耗时的百分比平均值,得到第四耗时百分比集。
7.根据权利要求6所述的方法,其特征在于,所述预先设定层级函数的层级数量为2,所述第二待赋权函数集包括第一子函数集,所述根据所述耗时百分比集,确定第二待赋权函数集中每一函数的权重值,包括:
对比所述第三耗时百分比集和第四耗时百分比集,确定第一子函数集中每一函数的百分比变化量;
根据所述百分比变化量,确定第一子函数集中每一函数的权重值,其中,所述第一子函数集中每一函数为第一待赋权函数下一级函数中所述百分比变化量非零的函数;
所述根据所述每一函数的权重值,确定超时的函数调用链路分支,包括:根据所述第一待赋权函数集和第一子函数集,确定超时的函数调用链路分支。
8.根据权利要求7所述的方法,其特征在于,所述预先设定层级函数的层级数量为3,所述第二待赋权函数集还包括第二子函数集,所述根据所述耗时百分比集,确定第二待赋权函数集中每一函数的权重值,还包括:
确定第五耗时百分比集和第六耗时百分比集,其中,所述第五耗时百分比集为在所述第一请求模式下第一子函数集中函数调用下一级函数的请求超时函数集中每一函数的调用耗时占第二层函数调用总耗时的百分比平均值,所述第六耗时百分比集为第二请求模式下第一子函数集中函数调用下一级函数的请求超时函数集中每一函数的调用耗时占第二层函数调用总耗时的百分比平均值;
根据所述第五耗时百分比集和所述第六耗时百分比集,确定第一子函数集中每一函数的百分比变化量;
根据所述百分比变化量,确定第二子函数集中每一函数的权重值,其中,所述第二子函数集中每一函数为第一子函数集中函数调用的下一级函数中所述百分比变化量非零的函数;
所述根据所述每一函数的权重值,确定超时的函数调用链路分支,包括:根据所述第一待赋权函数集、第一子函数集和第二子函数集,确定超时的函数调用链路分支。
9.根据权利要求8所述的方法,其特征在于,所述确定第五耗时百分比集和第六耗时百分比集,包括:
根据所述第三子耗时和所述第三子耗时对应的上一层函数的总耗时,确定第五请求超时函数集,其中,所述第五请求超时函数集为在所述第一请求模式下第一子函数集中函数调用下一级函数的请求超时函数集;
确定所述第五请求超时函数集中每一函数的调用耗时占第二层函数调用总耗时的百分比平均值,得到第五耗时百分比集;
根据第四子耗时,确定第六请求超时函数集,其中,所述第六请求超时函数集为第二请求模式下第一子函数集中函数调用下一级函数的请求超时函数集;
确定所述第六请求超时函数集中每一函数的调用耗时占第二层函数调用总耗时的百分比平均值,得到第六耗时百分比集。
10.一种并发请求超时的诊断装置,其特征在于,所述装置包括:
第一确定模块,用于并发请求接口函数超时的情况下,确定所述接口函数的超时率,所述接口函数的层级数量大于1;
第一获取模块,用于获取第一耗时集,其中,所述第一耗时集包括所述接口函数调用第一级函数的耗时;
第二确定模块,用于根据所述超时率和所述第一耗时集,确定第一级函数中的第一待赋权函数集,其中,所述第一待赋权函数集由第一级函数中耗时百分比排序大于等于超时率的函数组成;
第二获取模块,用于获取第二耗时集,其中,所述第二耗时集包括所述第一待赋权函数集中的每一函数调用预先设定层级函数的耗时;
第三确定模块,用于根据所述第二耗时集,确定导致所述接口函数超时的调用链路;
第四确定模块,用于将所述调用链路的末端函数确定为导致所述接口函数超时的函数。
11.一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至9任一项所述方法中的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至9任一项所述方法中的步骤。
CN202011379546.4A 2020-11-30 2020-11-30 一种并发请求超时的诊断方法及装置、设备、存储介质 Active CN112328335B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202011379546.4A CN112328335B (zh) 2020-11-30 2020-11-30 一种并发请求超时的诊断方法及装置、设备、存储介质
PCT/CN2021/129625 WO2022111278A1 (zh) 2020-11-30 2021-11-09 一种并发请求超时的诊断方法及装置、设备、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011379546.4A CN112328335B (zh) 2020-11-30 2020-11-30 一种并发请求超时的诊断方法及装置、设备、存储介质

Publications (2)

Publication Number Publication Date
CN112328335A true CN112328335A (zh) 2021-02-05
CN112328335B CN112328335B (zh) 2023-03-21

Family

ID=74309704

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011379546.4A Active CN112328335B (zh) 2020-11-30 2020-11-30 一种并发请求超时的诊断方法及装置、设备、存储介质

Country Status (2)

Country Link
CN (1) CN112328335B (zh)
WO (1) WO2022111278A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114115751A (zh) * 2022-01-25 2022-03-01 苏州浪潮智能科技有限公司 一种大规模分布式存储的操作耗时自动监控方法与系统
WO2022111278A1 (zh) * 2020-11-30 2022-06-02 深圳前海微众银行股份有限公司 一种并发请求超时的诊断方法及装置、设备、存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1635485A (zh) * 2003-12-26 2005-07-06 华为技术有限公司 远程同步调用过程中的超时自适应方法
US20150058866A1 (en) * 2013-08-22 2015-02-26 International Business Machines Corporation Calibrated timeout interval for concurrent shared inactivity timer
US20160085527A1 (en) * 2014-09-18 2016-03-24 Facebook, Inc. Code placement using a dynamic call graph
CN107589986A (zh) * 2017-07-28 2018-01-16 北京北信源软件股份有限公司 一种数据处理超时的通用处理方法与装置
CN109451020A (zh) * 2018-11-06 2019-03-08 深圳前海微众银行股份有限公司 超时管理方法、设备及计算机可读存储介质
CN110888704A (zh) * 2019-11-08 2020-03-17 北京浪潮数据技术有限公司 一种高并发接口处理方法、装置、设备及存储介质
CN111522746A (zh) * 2020-04-23 2020-08-11 腾讯科技(深圳)有限公司 数据处理的方法、装置、设备及计算机可读存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10649876B2 (en) * 2017-04-20 2020-05-12 International Business Machines Corporation Maintaining manageable utilization in a system to prevent excessive queuing of system requests
CN109753406B (zh) * 2018-12-05 2022-06-17 平安科技(深圳)有限公司 接口的性能监控方法、装置、设备及计算机可读存储介质
CN110865927B (zh) * 2019-11-20 2021-08-31 腾讯科技(深圳)有限公司 区块链调用链路异常检测方法、装置和计算机设备
CN111459547B (zh) * 2020-04-01 2021-10-08 腾讯科技(深圳)有限公司 一种函数调用链路的展示方法和装置
CN112328335B (zh) * 2020-11-30 2023-03-21 深圳前海微众银行股份有限公司 一种并发请求超时的诊断方法及装置、设备、存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1635485A (zh) * 2003-12-26 2005-07-06 华为技术有限公司 远程同步调用过程中的超时自适应方法
US20150058866A1 (en) * 2013-08-22 2015-02-26 International Business Machines Corporation Calibrated timeout interval for concurrent shared inactivity timer
US20160085527A1 (en) * 2014-09-18 2016-03-24 Facebook, Inc. Code placement using a dynamic call graph
CN107589986A (zh) * 2017-07-28 2018-01-16 北京北信源软件股份有限公司 一种数据处理超时的通用处理方法与装置
CN109451020A (zh) * 2018-11-06 2019-03-08 深圳前海微众银行股份有限公司 超时管理方法、设备及计算机可读存储介质
CN110888704A (zh) * 2019-11-08 2020-03-17 北京浪潮数据技术有限公司 一种高并发接口处理方法、装置、设备及存储介质
CN111522746A (zh) * 2020-04-23 2020-08-11 腾讯科技(深圳)有限公司 数据处理的方法、装置、设备及计算机可读存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022111278A1 (zh) * 2020-11-30 2022-06-02 深圳前海微众银行股份有限公司 一种并发请求超时的诊断方法及装置、设备、存储介质
CN114115751A (zh) * 2022-01-25 2022-03-01 苏州浪潮智能科技有限公司 一种大规模分布式存储的操作耗时自动监控方法与系统

Also Published As

Publication number Publication date
WO2022111278A1 (zh) 2022-06-02
CN112328335B (zh) 2023-03-21

Similar Documents

Publication Publication Date Title
EP2590081B1 (en) Method, computer program, and information processing apparatus for analyzing performance of computer system
CN112328335B (zh) 一种并发请求超时的诊断方法及装置、设备、存储介质
CN109633351B (zh) 智能it运维故障定位方法、装置、设备及可读存储介质
US10592327B2 (en) Apparatus, system, and method for analyzing logs
CN109587008A (zh) 检测异常流量数据的方法、装置及存储介质
US10447565B2 (en) Mechanism for analyzing correlation during performance degradation of an application chain
CN104182278B (zh) 一种判定计算机硬件资源繁忙程度的方法和装置
US10104428B2 (en) Video playing detection method and apparatus
CN111294819A (zh) 一种网络优化方法及装置
CN110096430A (zh) 第三方sdk准入测试方法、装置、终端及存储介质
CN105740434B (zh) 网络信息评分方法及装置
CN111124791A (zh) 一种系统测试方法及装置
CN117151070A (zh) 试卷组题方法、装置、设备及计算机可读存储介质
CN109582751B (zh) 一种检索效果的度量方法及服务器
CN112948262A (zh) 一种系统测试方法、装置、计算机设备和存储介质
CN109408304A (zh) 区块链引入测试方法、装置、设备及可读存储介质
CN109858632A (zh) 一种确定阈值的方法及装置
CN109240934A (zh) 应用程序性能测试方法、装置、及计算机可读存储介质
CN108418730A (zh) 网络流量测试方法、装置、设备以及计算机可读存储介质
US11403157B1 (en) Identifying a root cause of an error
CN110888811A (zh) 代码覆盖率信息处理方法、装置、电子设备及介质
CN110532758A (zh) 一种针对群组的风险识别方法及装置
CN117314121A (zh) 基于人员调配的信息处理方法、装置、设备及存储介质
CN108694074A (zh) 一种获取计数信息的方法以及服务器
US7716534B2 (en) Methods and apparatus for measuring performance in processing system

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant