一种监测卡顿、分析卡顿原因的方法、装置及设备制造方法及图纸

技术编号:31582130 阅读:12 留言:0更新日期:2021-12-25 11:25
本公开涉及一种监测卡顿、分析卡顿原因的方法、装置及设备,监测卡顿的方法包括:检测主线程的运行循环是否进入唤醒状态;在检测到运行循环进入唤醒状态时,开始按照周期获取主线程的调用栈,并检测唤醒状态的持续时间是否超过卡顿阈值;如果持续时间超过卡顿阈值,确定应用出现卡顿,并停止获取主线程的调用栈;向服务器发送卡顿的监测数据,监测数据包括卡顿时间段内的多个调用栈。分析卡顿原因的方法包括:接收N个卡顿的监测数据;对于每个卡顿,根据卡顿对应的多个调用栈确定导致卡顿的目标用户代码,得到K个目标用户代码;确定每个目标用户代码与卡顿之间的关联关系,以及每个用户代码关联的卡顿的统计信息。实现了卡顿监测和分析。分析。分析。

【技术实现步骤摘要】
一种监测卡顿、分析卡顿原因的方法、装置及设备


[0001]本公开涉及计算机领域,尤其涉及一种监测卡顿、分析卡顿原因的方法、装置及设备。

技术介绍

[0002]卡顿对于用户体验来说是非常严重的性能问题,最直观的体验是用户在操作App的过程中,感觉界面卡顿,无法按下某个按钮或打开某个界面等。
[0003]开发工程师在产品迭代过程中非常关心应用的卡顿,但卡顿问题受到客户端环境和用户使用习惯不同的影响,往往无法在本地进行复现,难以优化。
[0004]相关技术中的卡顿分析方案,即视觉卡顿,监听两次屏幕刷新回调的间隔时长。然而针对严重卡顿的监测和原因分析,目前尚未提出有效的解决方案。

技术实现思路

[0005]为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种监测卡顿、分析卡顿原因的方法、装置及设备。
[0006]第一方面,本公开提供了监测卡顿的方法,包括:检测主线程的运行循环是否进入唤醒状态;在检测到运行循环进入唤醒状态时,开始按照周期获取主线程的调用栈,并检测唤醒状态的持续时间是否超过卡顿阈值;如果持续时间超过卡顿阈值,确定应用出现卡顿,并停止获取主线程的调用栈;向服务器发送卡顿的监测数据,监测数据包括卡顿时间段内的多个调用栈。
[0007]在一些实施例中,还包括:在检测到运行循环进入唤醒状态时,开始获取网络请求信息;如果持续时间超过卡顿阈值,停止获取网络请求信息;其中,卡顿的监测数据还包括:卡顿时间段内的网络请求信息。
[0008]在一些实施例中,还包括:在应用启动后,检测并记录用户操作,形成用户操作轨迹;其中,卡顿的监测数据还包括:用户操作轨迹。
[0009]在一些实施例中,网络请求信息包括请求URI(Uniform Resource Identifier,统一资源标志符)、请求开始时间和请求持续时间。
[0010]在一些实施例中,检测并记录用户操作,包括:检测并记录最新的预设数量的用户操作。
[0011]在一些实施例中,开始按照周期获取主线程的调用栈之前,还包括:接收服务器发送的卡顿阈值;根据卡顿阈值和预设获取次数,确定用于获取主线程的调用栈的周期。
[0012]在一些实施例中,还包括:在持续时间未超过卡顿阈值的情况下,如果检测到运行循环进入休眠状态,停止获取主线程的调用栈。
[0013]第二方面,本公开提供了一种分析卡顿原因的方法,包括:接收N个卡顿的监测数据,其中,每个卡顿的监测数据包括卡顿时间段内主线程的多个调用栈;对于每个卡顿,根据卡顿对应的多个调用栈确定导致卡顿的目标用户代码,得到N个卡顿对应的K个目标用户
代码;确定K个目标用户代码中每个目标用户代码与卡顿之间的关联关系,以及每个用户代码关联的卡顿的数量和/或占比。
[0014]在一些实施例中,每个卡顿的监测数据还包括卡顿时间段内的用户操作轨迹,该方法还包括:对N个卡顿对应的用户操作轨迹进行聚类,得到N个卡顿对应的M个用户操作轨迹;确定M个用户操作轨迹对应中每个用户操作轨迹与卡顿之间的关联关系,以及每个用户操作轨迹关联的卡顿的数量和/或占比。
[0015]在一些实施例中,每个卡顿的监测数据还包括:卡顿时间段内的网络请求信息。
[0016]在一些实施例中,根据卡顿对应的多个调用栈确定导致卡顿的目标用户代码,包括:确定卡顿的多个调用栈中每个调用栈包含的用户代码;确定各个用户代码在多个调用栈中出现的次数;确定出现次数最多的用户代码为导致卡顿的目标用户代码。
[0017]第三方面,本公开提供了一种监测卡顿的装置,包括:检测模块,用于检测主线程的运行循环是否进入唤醒状态,在检测到运行循环进入唤醒状态时,检测唤醒状态的持续时间是否超过卡顿阈值;第一获取模块,用于在检测到运行循环进入唤醒状态时,开始按照周期获取主线程的调用栈,并在持续时间超过卡顿阈值时,停止获取主线程的调用栈;确定模块,用于在持续时间超过卡顿阈值时,确定应用出现卡顿;发送模块,用于向服务器发送卡顿的监测数据,监测数据包括卡顿时间段内的多个调用栈。
[0018]在一些实施例中,还包括:第二获取模块,用于在检测到运行循环进入唤醒状态时,开始获取网络请求信息,以及在持续时间超过卡顿阈值时,停止获取网络请求信息;其中,发送模块发送的卡顿的监测数据还包括:卡顿时间段内的网络请求信息。
[0019]在一些实施例中,还包括:第三获取模块,用于在应用启动后,检测并记录用户操作,形成用户操作轨迹;其中,发送模块发送的卡顿的监测数据还包括:用户操作轨迹。
[0020]第四方面,本公开提供了一种分析卡顿原因的装置,包括:接收模块,用于接收N个卡顿的监测数据,其中,每个卡顿的监测数据包括卡顿时间段内主线程的多个调用栈;第一确定模块,用于对于每个卡顿,根据卡顿对应的多个调用栈确定导致卡顿的目标用户代码,得到N个卡顿对应的K个目标用户代码;第二确定模块,用于确定K个目标用户代码中每个目标用户代码与卡顿之间的关联关系,以及每个用户代码关联的卡顿的数量和/或占比。
[0021]在一些实施例中,每个卡顿的监测数据还包括卡顿时间段内的用户操作轨迹,装置还包括:聚类模块,用于对N个卡顿对应的用户操作轨迹进行聚类,得到N个卡顿对应的M个用户操作轨迹;第三确定模块,用于确定M个用户操作轨迹对应中每个用户操作轨迹与卡顿之间的关联关系,以及每个用户操作轨迹关联的卡顿的数量和/或占比。
[0022]第五方面,本公开提供了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序;计算机程序被处理器执行时实现监测卡顿的方法的步骤。
[0023]第六方面,本公开提供了一种服务器,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序;计算机程序被处理器执行时实现分析卡顿原因的方法的步骤。
[0024]第七方面,本公开提供了一种计算机可读存储介质,计算机可读存储介质上存储有监测卡顿的程序,监测卡顿的程序被处理器执行时实现监测卡顿的方法的步骤。
[0025]第八方面,本公开提供了一种计算机可读存储介质,计算机可读存储介质上存储
有分析卡顿原因的程序,分析卡顿原因的程序被处理器执行时实现分析卡顿原因的方法的步骤。
[0026]本公开实施例提供的上述技术方案与相关技术相比具有如下优点:本公开实施例提供的该方法,检测主线程的运行循环是否进入唤醒状态,并监测唤醒状态的持续时间是否超过卡顿阈值,在持续时长操作卡顿阈值时,确定应用出现卡顿;同时,在进入唤醒状态时开始获取主线程的调用栈,在确定应用出现卡顿时停止获取主线程的调用栈,得到卡顿时间段内的多个调用栈,将该多个调用栈作为卡顿的监测数据,实现了对主线程阻塞导致的卡顿的监测,同时避免了监测占用过多资源,降低了监测对应用性能的影响。
附图说明
[0027]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
[本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种监测卡顿的方法,其特征在于,包括:检测主线程的运行循环是否进入唤醒状态;在检测到所述运行循环进入所述唤醒状态时,开始按照周期获取所述主线程的调用栈,并检测所述唤醒状态的持续时间是否超过卡顿阈值;如果所述持续时间超过所述卡顿阈值,确定应用出现卡顿,并停止获取所述主线程的调用栈;向服务器发送所述卡顿的监测数据,所述监测数据包括卡顿时间段内的多个所述调用栈。2.根据权利要求1所述的方法,其特征在于,还包括:在检测到所述运行循环进入所述唤醒状态时,开始获取网络请求信息;如果所述持续时间超过卡顿阈值,停止获取网络请求信息;其中,所述卡顿的监测数据还包括:卡顿时间段内的所述网络请求信息。3.根据权利要求1所述的方法,其特征在于,还包括:在所述应用启动后,检测并记录用户操作,形成用户操作轨迹;其中,所述卡顿的监测数据还包括:所述用户操作轨迹。4.根据权利要求2所述的方法,其特征在于,所述网络请求信息包括请求URI、请求开始时间和请求持续时间。5.根据权利要求3所述的方法,其特征在于,检测并记录用户操作,包括:检测并记录最新的预设数量的用户操作。6.根据权利要求1所述的方法,其特征在于,开始按照周期获取所述主线程的调用栈之前,还包括:接收服务器发送的卡顿阈值;根据所述卡顿阈值和预设获取次数,确定用于获取所述主线程的调用栈的周期。7.根据权利要求1至6中任一项所述的方法,其特征在于,还包括:在所述持续时间未超过所述卡顿阈值的情况下,如果检测到所述运行循环进入休眠状态,停止获取所述主线程的调用栈。8.一种分析卡顿原因的方法,其特征在于,包括:接收N个卡顿的监测数据,其中,每个卡顿的监测数据包括卡顿时间段内主线程的多个调用栈;对于每个卡顿,根据所述卡顿对应的所述多个调用栈确定导致所述卡顿的目标用户代码,得到所述N个卡顿对应的K个目标用户代码;确定所述K个目标用户代码中每个目标用户代码与卡顿之间的关联关系,以及每个用户代码关联的卡顿的数量和/或占比。9.根据权利要求8所述方法,其特征在于,每个卡顿的监测数据还包括卡顿时间段内的用户操作轨迹,所述方法还包括:对所述N个卡顿对应的用户操作轨迹进行聚类,得到所述N个卡顿对应的M个用户操作轨迹;确定所述M个用户操作轨迹对应中每个用户操作轨迹与卡顿之间的关联关系,以及每个用户操作轨迹关联的卡顿的数量和/或占比。
10.根据权利要求8或9所述方法,其特征在于,每个卡顿的监测数据还包括:卡顿时间段内的网络请求信息。11.根据权利要求8或9所述方法,其特征在于,根据所述卡顿对应的所述多个调用栈确定导致所述卡顿的目标用户代码,包括:确定所述卡顿的所述多个调用栈中每个调用栈包含的用户代码;确定各个所述用户代码在所述多个调用栈中出现的次数;确定出现次数最多的所述用户代码为导致所述卡顿的目标用户代码。12.一种监测卡顿的装置,其特征在于,包括:检测模块,用于检测主线程...

【专利技术属性】
技术研发人员:成梦阳
申请(专利权)人:北京基调网络股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1