掌桥专利:专业的专利平台
掌桥专利
首页

异常检测方法、装置及计算机可读存储介质

文献发布时间:2023-06-19 10:08:35


异常检测方法、装置及计算机可读存储介质

技术领域

本申请涉及电子技术领域,尤其涉及一种异常检测方法、装置及计算机可读存储介质。

背景技术

浏览器内核采用多进程架构,内核中各进程通过消息通信同步进程状态。其中,浏览器主进程(Main process in Browser)用于显示浏览器界面和管理调度浏览器中的其他进程,渲染进程(Render process)则用于解析和渲染网页内容。

在相关技术中,针对渲染进程进行未响应异常检测的机制为:通过主进程向渲染进程发送消息,若超时未得到响应即认为渲染进程处于未响应状态。然而在实际应用中存在渲染进程状态正常,但由于执行耗时较长的操作导致响应超时的场景,在这一场景中,渲染进程在耗时操作执行完毕后仍能正常接收并响应主进程发送的消息,渲染进程实际并不处于无响应异常状态。由此可见,目前对渲染进程进行未响应异常检测的准确性较低。

发明内容

本申请实施例提供了一种异常检测方法、装置及计算机可读存储介质,至少能够解决相关技术中对渲染进程进行未响应异常检测的准确性较低的问题。

本申请实施例第一方面提供了一种异常检测方法,应用于采用多进程架构的浏览器客户端,所述多进程架构包括主进程和渲染进程,包括:

在对第一网页进行加载之后,根据所述主进程输出的第一渲染进程未响应事件生成第一错误信息;

在根据第二网页加载操作加载第二网页之后,根据所述主进程输出的第二渲染进程未响应事件生成第二错误信息;

将所述第一错误信息与所述第二错误信息进行比对,校验所述渲染进程是否处于无响应异常状态。

本申请实施例第二方面提供了一种异常检测装置,应用于采用多进程架构的浏览器客户端,所述多进程架构包括主进程和渲染进程,包括:

第一生成模块,用于在对第一网页进行加载之后,根据所述主进程输出的第一渲染进程未响应事件生成第一错误信息;

第二生成模块,用于在根据第二网页加载操作加载第二网页之后,根据所述主进程输出的第二渲染进程未响应事件生成第二错误信息;

校验模块,用于将所述第一错误信息与所述第二错误信息进行比对,校验所述渲染进程是否处于无响应异常状态。

本申请实施例第三方面提供了一种电子装置,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,实现上述本申请实施例第一方面提供的异常检测方法中的各步骤。

本申请实施例第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,实现上述本申请实施例第一方面提供的异常检测方法中的各步骤。

由上可见,根据本申请方案所提供的异常检测方法、装置及计算机可读存储介质,在对第一网页进行加载之后,根据主进程输出的第一渲染进程未响应事件生成第一错误信息;在根据第二网页加载操作加载第二网页之后,根据主进程输出的第二渲染进程未响应事件生成第二错误信息;将第一错误信息与第二错误信息进行比对,校验渲染进程是否处于无响应异常状态。通过本申请方案的实施,基于同一渲染进程连续两次打开页面均抛出未响应异常事件的错误信息作为异常检测规则,能有效提高渲染进程无响应状态检测结果的准确率。

附图说明

图1为本申请第一实施例提供的异常检测方法的基本流程示意图;

图2为本申请第一实施例提供的一种第二网页加载操作示意图;

图3为本申请第一实施例提供的一种多进程架构的进程通信示意图;

图4为本申请第一实施例提供的渲染进程切换调用方法的流程示意图;

图5为本申请第二实施例提供的异常检测方法的细化流程示意图;

图6为本申请第三实施例提供的异常检测装置的程序模块示意图;

图7为本申请第四实施例提供的电子装置的结构示意图。

具体实施方式

为使得本申请的发明目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而非全部实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

为了解决相关技术中对渲染进程进行未响应异常检测的准确性较低的缺陷,本申请第一实施例提供了一种异常检测方法,应用于采用多进程架构的浏览器客户端,多进程架构包括主进程和渲染进程,其中,浏览器主进程用于显示浏览器界面和管理调度浏览器中的其他进程,渲染进程用于解析和渲染网页内容。在实际应用中,使用多进程架构可以提升浏览器的稳定性,保证页面的崩溃不会造成浏览器应用崩溃。

如图1为本实施例提供的异常检测方法的基本流程图,该异常检测方法包括以下的步骤:

步骤101、在对第一网页进行加载之后,根据主进程输出的第一渲染进程未响应事件生成第一错误信息。

具体的,在实际应用中,当浏览器客户端被启动后,当接收到网页统一资源定位符(URL,Uniform Resource Locator)加载指令,加载对应网页地址的页面,当加载完成后在相应页面可以进行上下滑动、输入文字、点击页面中其它连接、查看图片、刷新页面等常规浏览操作。主进程在网页加载过程中将网页资源同步至渲染进程进行渲染。

在实际应用中,若第一网页前端代码存在特定类型逻辑缺陷或执行耗时操作,此时第一网页的页面发生卡死,当前屏幕显示内容保持不变,无法对点击、滑动等手势事件进行响应,主进程此时则抛出渲染进程未响应事件。相对应的,浏览器内核基于本次渲染进程未响应事件记录第一错误信息。

在本实施例的一些实施方式中,在根据主进程输出的第一渲染进程未响应事件生成第一错误信息之前,还包括:控制主进程向渲染进程发送心跳消息,并启动超时计时器。

具体的,在本实施例中,用户在浏览网页时,通过手势事件与浏览器进行交互。本实施例在加载网页之后接收到用户输入的手势事件(例如滑动、点击等)时,主进程向渲染进程发送心跳消息,消息发出的同时启动超时计时器。

在本实施例中,若在超时计时器的计时周期内未收到对应于心跳消息的心跳响应,则主进程输出渲染进程未响应事件。渲染进程未响应事件也即主进程所抛出的RendererUnresponsive事件。

本实施例的RendererUnresponsive事件用于指示渲染进程处于超时无响应状态,此时渲染进程未能回复主进程所发送的消息,也不能响应于主进程发送的指令来执行对应操作,在用户侧通常表现为浏览器页面卡死或无法进行点击、上下滑动等手势交互操作,极大地影响了用户的浏览体验。在实际应用中,一种情况下,超时无响应状态可以由渲染进程当前所执行的操作较为耗时所导致,也即此时渲染进程实际上功能状态正常;而在另一种情况下,超时无响应状态还可以由浏览器自身代码逻辑问题导致,在这种情况下渲染进程实际上已发生功能状态异常。由此,在实际应用中渲染进程超时未响应并非一定是出现无响应异常状态,从而若在实际应用中仅凭主进程所抛出的RendererUnresponsive事件即认定渲染进程处于无响应异常状态,则会较为容易产生误判。

进一步地,在本实施例一些实施方式中,在启动超时计时器之前,还包括:获取所加载的网页的网页属性;基于网页属性设定对应于超时计时器的计时周期。

具体的,本实施例的网页属性包括网页资源类型、网页地址等,在实际应用中,当浏览器加载不同网页属性的网页时,渲染进程的渲染耗时有所不同,而若针对超时计时器设置统一的计时周期,则可能会存在RendererUnresponsive事件频繁抛出的情况,导致渲染进程异常状态误判概率的进一步增加,由此,本实施例针对所加载的网页适应性设定渲染进程的心跳响应计时周期,以保证RendererUnresponsive事件抛出的有效性。

步骤102、在根据第二网页加载操作加载第二网页之后,根据主进程输出的第二渲染进程未响应事件生成第二错误信息。

具体的,在实际应用中,当此前所加载的网页由于渲染进程超时未响应而出现页面卡死等情况时,通常用户会触发第二网页加载操作,例如点击刷新页面按钮、在浏览器地址栏输入第二网页地址并加载等,以再次进行网页加载,应当理解的是,本实施例的第二网页的网页地址可以与第一网页相同或不同。本实施例以第一网页与第二网页为不同页面为例,其中第二网页为上级页面(例如百度首页),而第一网页为子级页面(例如在百度首页输入词条后所进一步搜索到的页面),如图2所示为本实施例提供的一种第二网页加载操作示意图,图中A为第一网页,B为第二网页,若此时在第一网页发生超时未响应,用户可以通过在浏览器界面输入右滑操作返回上级页面也即第二网页,以对第二网页进行加载。

在本实施例中,浏览器加载第二网页,主进程再次向渲染进程发送消息和启动超时计时器,若此时渲染进程仍旧超时未响应,即无法响应主进程发送的消息,浏览器将显示一个空白页面,且页面中加载进度条一直不消失,最终计时器超时,主进程第二次抛出RendererUnreponsive事件,内核记录本次RendererUnreponsive事件信息作为第二错误信息。

步骤103、将第一错误信息与第二错误信息进行比对,校验渲染进程是否处于无响应异常状态。

具体的,区别于相关技术中仅通过一次渲染进程超时未响应便判定渲染进程处于无响应异常状态,本实施例基于同一渲染进程连续两次打开页面均抛出未响应异常事件的错误信息作为检测规则,通过对比两次错误信息来确定渲染进程是否真实处于无法自行恢复的无响应异常状态,能有效提高渲染进程无响应状态检测结果的准确率。

在本实施例一些实施方式中,错误信息包括渲染进程标识以及渲染视图对象标识。相对应的,将第一错误信息与第二错误信息进行比对,校验渲染进程是否处于无响应异常状态的流程,具体包括:将第一错误信息与第二错误信息的渲染进程标识以及渲染视图对象标识分别进行比对,校验渲染进程是否处于无响应异常状态。

如图3所示为本实施例提供的一种多进程架构的进程通信示意图,具体的,每个渲染进程有一个或多个渲染视图RenderView对象,一个渲染视图对象对应一个网页,并在主进程侧有一个对应的渲染视图宿主RenderViewHost对象。在本实施例中,在渲染进程标识比对一致且渲染视图对象标识比对不一致时,确认渲染进程处于无响应异常状态,反之,渲染进程则处于正常无响应状态,也即渲染进程所执行的操作当前较为耗时而导致计时周期内未及时响应,而在操作完成后则可正常响应主进程的消息。

如图4所示为本实施例提供的一种渲染进程切换调用方法的流程示意图,在本实施例一些实施方式中,当第一网页的网页地址与第二网页相同时,在校验渲染进程是否处于无响应异常状态之后,还具体包括如下步骤:

步骤401、当渲染进程处于无响应异常状态时,将第一网页的网页地址记录至预设地址名单;

步骤402、当接收到网页加载操作时,在地址名单内查询网页加载操作相应的目标网页地址;

步骤403、在目标网页地址处于地址名单之内时,调用待切换渲染进程渲染目标网页地址对应的网页。

具体的,在本实施例中,前后两次所加载的网页为同一网页,而当渲染进程在渲染该网页而发生无响应异常时,可能是由于该网页本身所导致,例如该网页为复杂网页、不兼容网页或有安全漏洞的网页等等。而为了保证后续可正常加载该网页,则需要避免仍采用此前的渲染进程进行页面渲染,由此,本实施例可以在渲染进程发生无响应异常时,将当前加载的网页的网页地址记录到预设地址名单,然后在后续进行网页加载时,均在地址名单内对网页地址进行查询,若处于该名单,则切换渲染进程来进行网页渲染,以提高用户的浏览器使用体验。

进一步地,在本实施例的一些实施方式中,调用待切换渲染进程渲染目标网页地址对应的网页的实现方式包括但不限于以下两种:

方式一,调用多进程架构内所包括的备用渲染进程,渲染目标网页地址对应的网页。

具体的,在实际应用中,多进程架构内可以设置有多个(例如两个)性能有所不同的渲染进程,而在常规使用场景中可以默认使用其中的主用渲染进程,而在加载此前发生无响应异常的网页时,则使用备用渲染进程,该备用渲染进程相对于主用渲染进程来说,其性能可以相对更高或代码逻辑兼容性更强。

方式二,调用独立于多进程架构的外部渲染进程,渲染目标网页地址对应的网页。

具体的,在浏览器客户端加载不兼容网页时,网页中JS脚本会无线循环,长期占用着CPU会使得后续事件得不到及时处理,从而导致浏览器客户端无法响应用户操作而卡死,导致浏览器无法正常使用,由此,本实施例在加载此类网页时,可以采用浏览器自身进程之外的独立渲染进程进行网页渲染,从而即使不兼容网页导致浏览器卡死也不会影响浏览器自身进程,避免了整个浏览器无法使用的问题,可有效增强浏览器的稳定性。

在本实施例一些实施方式中,在校验渲染进程是否处于无响应异常状态之后,还包括:当渲染进程处于无响应异常状态时,对渲染进程进行重启;对第一网页和/或第二网页重新进行加载。

具体的,目前,现有方案主进程只检测渲染进程是否处于无响应的异常状态,对于已处于异常状态的渲染进程,主进程未提供有效的干预措施,故一旦渲染进程出现无响应的异常状态,内核将无法自行修复该异常,需要用户手动重启浏览器应用进行恢复,极大地影响使用体验。

而在本实施例中,当确定渲染进程处于无响应异常状态时,主进程通知操作系统关闭当前渲染进程并创建新渲染进程,从而自动恢复处于无响应状态的渲染进程,而不再需要用户手动点击或重启浏览器应用,减轻渲染进程无响应异常给用户体验带来的负面影响。应当理解的是,在本实施例前后所请求加载的第一网页和第二网页为不同网页地址的网页时,重新加载的网页可以是两者中至少之一。还应当说明的是,本实施例的错误信息中还携带有网页地址,从而可参考错误信息中的网页地址来进行网页的重新加载。

基于上述本申请实施例的技术方案,在对第一网页进行加载之后,根据主进程输出的第一渲染进程未响应事件生成第一错误信息;在根据第二网页加载操作加载第二网页之后,根据主进程输出的第二渲染进程未响应事件生成第二错误信息;将第一错误信息与第二错误信息进行比对,校验渲染进程是否处于无响应异常状态。通过本申请方案的实施,基于同一渲染进程连续两次打开页面均抛出未响应异常事件的错误信息作为异常检测规则,能有效提高渲染进程无响应状态检测结果的准确率。

图5中的方法为本申请第二实施例提供的一种细化的异常检测方法,该异常检测方法包括:

步骤501、根据网页加载操作控制浏览器客户端加载网页。

具体的,在本实施例中,浏览器客户端采用多进程架构,多进程架构包括主进程和渲染进程,其中,浏览器主进程用于显示浏览器界面和管理调度浏览器中的其他进程,渲染进程用于解析和渲染网页内容。

步骤502、控制主进程向渲染进程发送心跳消息,并启动超时计时器。

步骤503、若在超时计时器的计时周期内未收到对应于心跳消息的心跳响应,主进程输出渲染进程未响应事件。

具体的,本实施例的主进程若在超时计时器的计时周期内未收到对应于心跳消息的心跳响应,则主进程输出渲染进程未响应事件。渲染进程未响应事件也即主进程所抛出的RendererUnresponsive事件,用于指示渲染进程当前处于超时无响应状态。

步骤504、基于渲染进程未响应事件记录包括渲染进程标识以及渲染视图对象标识的错误信息。

具体的,每个渲染进程有一个或多个渲染视图对象,一个渲染视图对象对应一个网页。

步骤505、判断所记录的错误信息是否为首个错误信息。若是,则返回执行步骤501;若否,则继续执行步骤506。

具体的,本实施例在首次记录错误信息时,则继续根据网页加载操作重新进行网页加载,并在前后记录两次错误信息时,再执行后续流程。

步骤506、将前后两个错误信息中的渲染进程标识以及渲染视图对象标识进行比对。

步骤507、在渲染进程标识比对一致且渲染视图对象标识比对不一致时,确定渲染进程处于无响应异常状态。

具体的,本实施例在渲染进程标识比对一致且渲染视图对象标识比对不一致时,确认渲染进程当前并非因为执行耗时操作而导致超时未响应,而是由于网页前端代码存在特定类型逻辑缺陷而导致,从而可以确定渲染进程当前确实发生无响应异常。

步骤508、对渲染进程进行重启,以及对第一网页和/或第二网页重新进行加载。

具体的,本实施例当确定渲染进程处于无响应异常状态时,主进程通知操作系统关闭当前渲染进程并创建新渲染进程,从而自动恢复处于无响应状态的渲染进程,而不再需要用户手动点击或重启浏览器应用,减轻渲染进程无响应异常给用户体验带来的负面影响。

应当理解的是,本实施例中各步骤的序号的大小并不意味着步骤执行顺序的先后,各步骤的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成唯一限定。

根据本申请实施例公开的异常检测方法,基于同一渲染进程连续两次打开页面均抛出未响应异常事件的错误信息作为异常检测规则,能有效提高渲染进程无响应状态检测结果的准确率。另外,当确定渲染进程处于无响应异常状态时,主进程通知操作系统重启渲染进程,从而自动恢复处于无响应状态的渲染进程,有效降低了用户的异常感知,提升了用户的浏览器使用体验。

图6为本申请第三实施例提供的一种异常检测装置。该异常检测装置可用于实现前述实施例中的异常检测方法。如图6所示,该异常检测装置主要包括:

第一生成模块601,用于在对第一网页进行加载之后,根据主进程输出的第一渲染进程未响应事件生成第一错误信息;

第二生成模块602,用于在根据第二网页加载操作加载第二网页之后,根据主进程输出的第二渲染进程未响应事件生成第二错误信息;

校验模块603,用于将第一错误信息与第二错误信息进行比对,校验渲染进程是否处于无响应异常状态。

在本实施例的一些实施方式中,错误信息包括渲染进程标识以及渲染视图对象标识。相对应的,校验模块具体用于:将第一错误信息与第二错误信息的渲染进程标识以及渲染视图对象标识分别进行比对,校验渲染进程是否处于无响应异常状态;其中,在渲染进程标识比对一致且渲染视图对象标识比对不一致时,渲染进程处于无响应异常状态。

在本实施例的一些实施方式中,异常检测装置还包括:计时模块,用于:在根据主进程输出的第一渲染进程未响应事件生成第一错误信息之前,控制主进程向渲染进程发送心跳消息,并启动超时计时器;其中,若在超时计时器的计时周期内未收到对应于心跳消息的心跳响应,主进程输出渲染进程未响应事件。

进一步地,在本实施例的另一些实施方式中,异常检测装置还包括:设定模块,用于:在启动超时计时器之前,获取所加载的网页的网页属性;基于网页属性设定对应于超时计时器的计时周期。。

在本实施例的一些实施方式中,第一网页的网页地址与第二网页相同。而异常检测装置还包括:调用模块,用于:在校验渲染进程是否处于无响应异常状态之后,当渲染进程处于无响应异常状态时,将第一网页的网页地址记录至预设地址名单;当接收到网页加载操作时,在地址名单内查询网页加载操作相应的目标网页地址;在目标网页地址处于地址名单之内时,调用待切换渲染进程渲染目标网页地址对应的网页。

进一步地,在本实施例的一些实施方式中,调用模块在执行调用待切换渲染进程渲染目标网页地址对应的网页时,具体用于:调用多进程架构内所包括的备用渲染进程,渲染目标网页地址对应的网页;或,调用独立于多进程架构的外部渲染进程,渲染目标网页地址对应的网页。

在本实施例的另一些实施方式中,异常检测装置还包括:加载模块,用于:在校验渲染进程是否处于无响应异常状态之后,当渲染进程处于无响应异常状态时,对渲染进程进行重启;对第一网页和/或第二网页重新进行加载。

应当说明的是,第一、二实施例中的异常检测方法均可基于本实施例提供的异常检测装置实现,所属领域的普通技术人员可以清楚的了解到,为描述的方便和简洁,本实施例中所描述的异常检测装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

根据本实施例所提供的异常检测装置,在对第一网页进行加载之后,根据主进程输出的第一渲染进程未响应事件生成第一错误信息;在根据第二网页加载操作加载第二网页之后,根据主进程输出的第二渲染进程未响应事件生成第二错误信息;将第一错误信息与第二错误信息进行比对,校验渲染进程是否处于无响应异常状态。通过本申请方案的实施,基于同一渲染进程连续两次打开页面均抛出未响应异常事件的错误信息作为检测规则,能有效提高渲染进程无响应状态检测结果的准确率。

请参阅图7,图7为本申请第四实施例提供的一种电子装置。该电子装置可用于实现前述实施例中的异常检测方法。如图7所示,该电子装置主要包括:

存储器701、处理器702、总线703及存储在存储器701上并可在处理器702上运行的计算机程序,存储器701和处理器702通过总线703连接。处理器702执行该计算机程序时,实现前述实施例中的异常检测方法。其中,处理器的数量可以是一个或多个。

存储器701可以是高速随机存取记忆体(RAM,Random Access Memory)存储器,也可为非不稳定的存储器(non-volatile memory),例如磁盘存储器。存储器701用于存储可执行程序代码,处理器702与存储器701耦合。

进一步的,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是设置于上述各实施例中的电子装置中,该计算机可读存储介质可以是前述图7所示实施例中的存储器。

该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现前述实施例中的异常检测方法。进一步的,该计算机可存储介质还可以是U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个可读存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的可读存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上为对本申请所提供的异常检测方法、装置及计算机可读存储介质的描述,对于本领域的技术人员,依据本申请实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。

相关技术
  • 一种异常检测方法、异常检测装置及计算机可读存储介质
  • 空调短路异常检测方法、计算机装置以及计算机可读存储介质
技术分类

06120112436998