CN113595814A - 消息延迟检测方法、装置、电子设备及存储介质 - Google Patents
消息延迟检测方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113595814A CN113595814A CN202110762437.9A CN202110762437A CN113595814A CN 113595814 A CN113595814 A CN 113595814A CN 202110762437 A CN202110762437 A CN 202110762437A CN 113595814 A CN113595814 A CN 113595814A
- Authority
- CN
- China
- Prior art keywords
- message
- delay
- time
- type
- delay threshold
- 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.)
- Pending
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 136
- 238000012545 processing Methods 0.000 claims abstract description 185
- 238000000034 method Methods 0.000 claims description 51
- 238000013507 mapping Methods 0.000 claims description 29
- 238000004458 analytical method Methods 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 4
- 230000003111 delayed effect Effects 0.000 description 34
- 230000006870 function Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 238000012423 maintenance Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000010354 integration Effects 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000002349 favourable effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3419—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0852—Delays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/50—Testing arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/16—Threshold monitoring
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例公开了一种消息延迟检测方法、装置、电子设备及存储介质,包括:当终端***中应用程序的目标线程执行时,获取目标线程中消息对应的处理时间;对目标线程中消息进行类型识别,得到消息的消息类型;根据消息类型确定消息所对应的消息延迟阈值;根据处理时间和消息延迟阈值,对消息进行延迟检测,得到消息的延迟检测结果;该方案针对不同类型的消息采用不同消息延迟阈值进行消息延迟检测,可以提升消息延迟检测的准确性。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种消息延迟检测方法、装置、电子设备及存储介质。
背景技术
随着计算机技术的快速发展,电子设备得到了广泛的应用,人们往往通过对电子设备中各种应用程序的使用来完成日常的学习和工作。
应用程序的使用需要依赖电子设备中的终端***,终端***为应用程序提供运行环境,终端***往往是通过发送消息来完成通信,消息是通信***传输的对象,是信息的载体,但消息在发送过程中往往会存在延迟,即消息在线程中处理时会发生延迟,一旦延迟时间过长就会影响到***的性能,例如,界面(UI,User Interface)层的画面卡顿,甚至出现死机等现象,最终影响用户体验,因此如何对延迟进行检测,快速的获取到发生延迟的原因,对保证***的流畅性具有重要意义。
在一些***中设置有延迟检测机制,如安卓(Android)***中原生的延迟检测机制,当达到一定时间时,就会返回延迟报告,但是这种延迟检测的结果不准确。
发明内容
本申请实施例提供一种消息延迟检测方法、装置、电子设备及存储介质,可以提高消息延迟检测的准确性。
本申请提供了一种消息延迟检测方法,包括:
当终端***中应用程序的目标线程执行时,获取目标线程中消息对应的处理时间;
对目标线程中消息进行类型识别,得到消息的消息类型;
根据消息类型确定消息所对应的消息延迟阈值;
根据处理时间和消息延迟阈值,对消息进行延迟检测,得到消息的延迟检测结果。
相应的,本申请还提供了一种消息延迟检测装置,包括:
获取模块,用于当终端***中应用程序的目标线程执行时,获取目标线程中消息对应的处理时间;
识别模块,用于对目标线程中消息进行类型识别,得到消息的消息类型;
确定模块,用于根据识别模块识别得到的消息的消息类型确定消息所对应的消息延迟阈值;
分析模块,用于根据获取模块获取的处理时间和确定模块确定的消息延迟阈值,对消息进行延迟检测,得到消息的延迟检测结果。
可选的,在本发明的一些实施例中,确定模块包括:
第一获取单元,用于获取映射关系集合,映射关系集合包括预设消息类型与预设消息延迟阈值的映射关系;
第一确定单元,用于根据第一获取单元获取的映射关系集合和识别模块识别得到的消息类型,确定消息所对应的消息延迟阈值。
可选的,在本发明的一些实施例中,确定模块包括:
第二确定单元,用于确定消息类型对应的消息延迟阈值区间;
第三确定单元,用于根据消息类型发生延迟的延迟频率,从消息延迟区间中确定消息所对应的消息延迟阈值。
可选的,在本发明的一些实施例中,第三确定单元包括:
选取子单元,用于从所述消息延迟阈值区间中选取初始消息延迟阈值;
记录子单元,用于记录所述消息类型发生延迟的延迟频率;
调整子单元,用于根据所述延迟频率在所述消息延迟阈值区间内对所述初始消息延迟阈值进行调整以得到所述消息所对应的消息延迟阈值。
可选的,在本发明的一些实施例中,处理时间包括消息从目标线程的消息队列中被派发的派发延迟时间,获取目标线程中消息对应的处理时间具体用于:
当目标线程中的消息进入消息队列时,确定消息从消息队列中被派发的期望派发时间;
当消息被派发出消息队列时,获取消息从消息队列中被派发的实际派发时间;
根据实际派发时间和期望派发时间生成消息的派发延迟时间。
可选的,在本发明的一些实施例中,处理时间包括消息从目标线程的消息队列中被派发的派发延迟时间,获取目标线程中消息对应的处理时间具体用于:
当目标线程中的消息被派发后开始执行时,获取消息的开始执行时间;
当消息执行结束时,获取消息的结束执行时间;
根据开始执行时间和结束执行时间生成消息的执行时间。
可选的,在本发明的一些实施例中,消息延迟检测装置还包括反馈模块,反馈模块包括:
第二获取单元,用于若消息的延迟检测结果为消息延迟,则获取运行应用程序的设备信息及消息发生延迟的延迟信息;
第一输出单元,用于输出设备信息及延迟信息。
本申请获取到线程中消息的处理时间和消息所对应的消息延迟阈值,根据消息处理时间和消息延迟阈值得到消息延迟检测结果;其中,消息的消息延迟阈值的获取是根据消息的消息类型确定的,本申请针对不同的消息类型,设置有对应不同的消息延迟阈值,使消息延迟检测的结果更准确,另外,本申请通过对线程中消息的延迟检测,能够精准的获取到线程中每条消息的延迟情况,使消息延迟检测的粒度更加精细,提高消息延迟定位的准确性。
附图说明
为了更清楚地说明本申请中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的消息延迟检测方法的场景示意图;
图2是本申请提供的消息延迟检测方法的流程示意图;
图3是本申请提供的消息延迟检测方法中获取消息的处理时间的流程图;
图4是本申请提供的消息延迟检测方法中获取消息派发延迟时间的流程图;
图5是本申请提供的消息延迟检测方法中获取消息执行时间的流程图;
图6是本申请提供的消息延迟检测方法中获取延迟消息的延迟信息的流程图;
图7是本申请提供的消息延迟检测方法的另一流程示意图;
图8是本申请提供的消息延迟检测装置的结构示意图;
图9是本申请提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请实施例提供一种消息延迟检测方法、装置、电子设备及存储介质。具体地,本申请实施例提供适用于电子设备的消息延迟检测装置,其中,电子设备可以为终端或服务器等设备,其中,终端可以为笔记本、台式机、智能手机、智能电视、平板电脑或者车载智能终端等等,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(CDN,ContentDelivery Network)、以及大数据和人工智能平台等基础云计算服务的云服务器等,服务器可以通过有线或无线通信方式进行直接或间接地连接。
可以理解的是,本申请实施例的消息延迟检测方法可以是在终端上执行,也可以是在服务器上执行,还可以是由终端和服务器共同执行。
例如,请参阅图1,本申请实施例以终端和服务器共同执行消息延迟检测方法为例,其中,在终端和服务器的基础上也可以增加其他设备来辅助完成消息延迟检测方法,在此对其他设备的类型不做限定;终端与服务器之间通过网络连接,比如,通过有线或无线网络连接等,其中,消息延迟检测装置可以集成在服务器中,而将消息延迟检测装置集成在终端上则可以参考将消息延迟检测装置集成在服务器上进行理解。
其中,将消息延迟检测装置集成在服务器上具体包括:服务器可以获取应用程序运行时线程中消息的处理时间,并根据消息的消息类型确定消息的消息延迟阈值,根据消息的处理时间与消息所对应的消息延迟阈值,得到线程执行时线程中消息的延迟检测结果。
其中,首先,终端可以触发并启动应用程序,然后,由服务器对应用程序运行时的线程中消息进行延迟检测后,最后,终端可以接收到服务器发送的消息延迟检测结果,方便维护人员在终端根据延迟检测结果做出相应的调整。
本申请实施例提供的消息延迟检测方法涉及终端***中应用程序在运行时,线程中消息的处理问题。本申请实施例在对消息的消息类型识别后,根据消息类型确定出消息所对应的消息延迟阈值,并获取到消息在线程中的处理时间,根据消息的消息延迟阈值和处理时间,对消息进行延迟检测,得到消息的延迟检测结果。
其中,在本申请实施例中,消息的延迟检测结果可以是消息处理延迟或者消息处理正常,因此针对不同的延迟检测结果,维护人员在客户端可以做出不同的调整,如延迟检测结果表示消息发生延迟,则维护人员可通过延迟检测结果及时的发现发生延迟的位置和原因,及时的对相应位置做出调整,保证线程执行的流畅性,如果延迟检测结果表示消息处理正常,则维护人员可不做出调整。
另外,消息在线程中的消息延迟阈值是根据消息的消息类型确定的,不同消息类型的消息所对应的消息延迟阈值可以是不同的,其中,消息延迟阈值的具体数值可以是根据管理人员或者维护人员的经验、应用或者场景的需求进行设定的,在此对消息延迟阈值的具体设置方式及设置标准不做限定。
本申请针对线程中每种消息的消息类型的不同,设置有不同的消息延迟阈值,使应用程序在运行时,对应在线程中的消息能够根据其自身的消息类型确定出相应的消息延迟阈值,并在获取到消息的处理时间后,根据消息的处理时间与消息延迟阈值得到消息的延迟检测结果,在输出该延迟检测结果后,如果延迟检测结果为消息延迟,也方便管理人员能够根据延迟检测结果确定发生延迟的具体的位置和原因,方便对其快速的调整,保证***的流畅性,另外,本申请实施例通过对线程中消息的延迟检测,能够精准的获取到线程中每条消息的延迟情况,使消息延迟检测的粒度更加精细,提高消息延迟定位的准确性。
以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优先顺序的限定。
请参阅图2,图2为本申请实施例提供的消息延迟检测方法的流程示意图。该消息延迟检测方法的具体流程可以如下:
101、当终端***中应用程序的目标线程执行时,获取目标线程中消息对应的处理时间。
其中,终端***位于电子设备的硬件和软件之间,负责管理计算机软硬件资源,为应用程序提供运行环境,终端***主要包括移动终端操作***,例如,安卓(Android)操作***、苹果(iOS)操作***、微软(windows)操作***、林纳克斯(Linux)操作***等。
其中,应用程序指为完成某项或多项特定工作的计算机程序,它运行在用户模式,可以和用户进行交互,具有可视的用户界面。比如,应用程序可以为视频应用、游戏应用、支付应用和搜索应用等。
其中,目标线程即终端***中应用程序在运行时执行的线程,线程(thread)是操作***能够进行运算调度的最小单位,线程本质上是一段指令(也是程序代码),由操作***执行线程来完成应用程序的业务逻辑。例如,安卓(Android)***中线程包括主线程和子线程。
其中,在本申请实施例中,消息是线程执行时处理的对象,终端***通过发送消息来完成通信,例如,消息的消息类型可以包括普通消息、绘制消息或者生命周期消息等。
本申请实施例以安卓(Android)操作***为例,其他终端***可以以安卓(Android)操作***为参照,例如,安卓(Android)***中每个应用程序在启动时都会有个线程,线程可以执行绘制操作,还可以执行其他操作,但如果应用的代码不规范,在线程中可能执行耗时,并且,由于线程中的消息都是按顺序处理的,所以,如果某条消息在处理过程中耗时,就会影响后续消息的处理,最终,就会影响到整个应用程序的运行,出现卡顿、丢帧等现象,而传统的对整个线程的延迟检测,仅能检测到整个线程的延迟情况,而不能获取到应用程序发生卡顿的具体原因,例如,不能获取到具体是哪条消息的处理发生了延迟,或者难以发现是线程处理的哪个过程中出现了延迟,不便于快速做出针对性的调整,因此,需要对线程中每条消息的处理进行检测,而对线程中每条消息的延迟检测的最直接的方式就是需要获取到消息的处理时间,判断该处理时间是否超时。
其中,消息的处理时间可以是消息在线程的各个处理过程中所使用的时间,也可以是两个或者多个连续的处理过程所使用的时间,还可以是各个处理过程的处理延迟时间。
例如,请参阅图3,每个安卓(Android)线程(thread)都存在一个消息队列(MessageQueue),用于存放将要被执行的消息,安卓线程的执行流程可以参阅如下步骤131-步骤134的内容:
131、对进入消息队列前的消息进行处理,例如,对消息循环进行初始化(Looper.prepareMainLooper)和循环获取消息(Looper.loop);
132、将获取到的消息进行发送(Handler.sendMessage);
133、将消息发送到消息队列中(MessageQueue.enqueueMessage);
134、循环从消息队列中取出消息来执行,例如,取出消息队列中位于队首的消息(MessageQueue.next)。
其中,在本申请实施例中,如果消息队列中没有消息则线程进入睡眠状态,从消息队列中取出消息的过程为消息的派发,执行过程即为消息的执行,因此,消息的处理时间可以为消息的派发时间和执行时间,并且,由于线程中消息从消息队列中被派发可能存在延迟,即消息并未按照期望派发的时间进行派发,因此,消息的处理时间还可以为派发延迟时间等,以上举例不应理解为对本申请实施例的限制。
其中,消息的处理时间的获取方式可以有多种,例如,在消息开始处理时进行计时,在消息处理结束时获取到消息处理结束时的时间,该消息处理结束时间即为消息的处理时间;
或者,如图3所示,获取消息的处理时间的具体方式可以参阅如下步骤135-步骤139的内容:
135、对消息开始处理进行标记或监控(LooperMonitor.markDispatch);
136、对消息处理结束进行标记或监控(LooperMonitor.markFinish);
其中,利用上述标记或者监控的方式分别记录消息开始处理时间和消息结束处理时间,利用处理前后时间点计算消息的处理时间,具体包括:
137、记录得到消息开始执行时间;
138、记录得到消息结束执行时间;
139、利用消息的结束执行时间和开始执行时间计算得到消息的执行时间;
其中,以上关于消息的处理时间的获取方式的举例仅作为一种具体实现方式,不应理解为对本申请实施例的限制。
例如,请参阅图4,在安卓(Android)***中,消息从消息队列(MessageQueue)中被派发的过程可以参阅如下步骤141-步骤144的内容:
141、循环从消息对象池中取一条消息(Message.obtain);
142、将获取到的消息发送到消息队列中(sendMessage);
143、将进入到消息队列中的消息按照期望派发时间的先后顺序进行排队(enqueueMessage);
144、由消息处理者按照期望派发时间循环从消息队列中获取到消息(Looper.loop)。
其中,在本申请实施例中,如果线程中前一个消息的处理发生延迟,会影响到后续消息的派发,使后续消息的派发发生延迟,即消息的处理时间包括消息派发延迟时间,当消息的处理时间包括消息从目标线程的消息队列中被派发的派发延迟时间,则可以对消息派发进行监控,获取消息的实际派发时间,即,可选的,在一些实施例中,步骤“当终端***中应用程序的目标线程执行时,获取目标线程中消息对应的处理时间”,具体可以包括:
145、当目标线程中的消息进入消息队列时,确定消息从消息队列中被派发的期望派发时间;
146、当目标线程中的消息被派发出消息队列时,获取消息从消息队列中被派发的实际派发时间;
根据实际派发时间和期望派发时间生成消息的派发延迟时间。
在本申请实施例中,通过消息从消息队列中被派发的期望派发时间和实际派发时间的获取,即可获取到消息的派发延迟时间,该派发延迟时间可以作为线程中消息被派发是否发生延迟的比较对象,即当该派发延迟时间超时时可认定消息的派发发生了延迟,其中,期望派发时间是在消息进入消息队列时进行设定的,即正常情况下,当满足期望派发时间后,消息即被派发出消息队列,获取到该设定时间即可,而实际派发时间是在消息从消息队列中被派发出时获取的,该实际派发时间可以是在消息离开消息队列时实时监控获取到,通过计算实际派发时间与期望派发时间的差值,即可得到消息的派发延迟时间,该种获取派发延迟时间的方法较为快捷和准确。
其中,请参阅图5,安卓线程中消息的执行过程如下:
151、循环从消息队列中获取到消息(MessageQueue.next);
152、执行获取到的消息(handMessage)。
其中,在本申请实施例中,执行消息所用的时间即为消息的执行时间,当消息的处理时间包括消息从目标线程的消息队列中被派发后执行的执行时间,则可以对消息执行前后的时间点进行监控获取,然后,根据消息执行前后的时间差计算消息的执行时间,即,可选的,在一些实施例中,步骤“当终端***中应用程序的目标线程执行时,获取目标线程中消息对应的处理时间”,具体可以包括:
153、当目标线程中的消息被派发后开始执行时,获取消息的开始执行时间;
154、当消息执行结束时,获取消息的结束执行时间;
根据开始执行时间和结束执行时间生成消息的执行时间。
在本申请实施例中,结束执行时间的获取可以在消息结束执行的时候实时监控获取,开始执行时间的获取可以在消息开始执行的时候实时监控获取,计算结束执行时间和开始执行时间的差值,该差值即为消息的执行时间,并且,该种利用执行前后时间点的差值的方式获取到的执行时间,也较为准确和便捷。
其中,消息从线程中被派发后即刻开始进行消息的执行,所以消息从线程中被派发的实际派发时间也即为消息的开始执行时间,因此在消息从消息队列中被派发时获取到的时间既可以作为消息派发的实际派发时间,也可以作为消息的开始执行时间。
102、对目标线程中消息进行类型识别,得到消息的消息类型;
在本申请实施例中,应用程序在运行时,依靠线程的执行来完成界面的各种绘制或者数据加载,而线程中不同类型的消息对界面的处理不同,并且不同类型的消息所对应的处理时间往往也是不同的,而对消息的类型的识别则有助于确定消息在正常情况下的处理时间。
其中,消息的消息类型可根据消息的唯一的标识进行确定,即,可选的,在一些实施例中,步骤“对目标线程中消息进行类型识别,得到消息的消息类型”,具体可以包括:
识别消息的消息标识及消息的处理线程类型;
根据消息标识及处理线程类型确定消息的消息类型。
其中,消息标识包括消息号或者消息唯一编码(消息ID),该消息标识用来唯一标识该消息,不同类型的消息的处理线程的类型不同,所以可以根据消息标识和消息的处理线程的类型确定消息的消息类型。
例如,在本申请实施例中,可根据消息标识、处理线程类型和消息类型之间的映射关系,确定消息的消息类型,或者,根据消息标识确定一部分消息类型集合,然后,在根据消息的处理线程类型从上述集合中确定出唯一的消息类型等,以上举例不应理解为对本申请实施例的限制。
103、根据消息类型确定消息所对应的消息延迟阈值;
其中,应用程序在运行时,线程中不同消息的处理时间的长短可能不同,如果将线程中所有消息的消息延迟阈值设置为相同的,那么在对消息延迟检测时会出现检测结果不准确的问题,例如,如果将消息延迟阈值设置的较大,会使一些处理时间较短的消息,在发生了延迟后,由于延迟后时间仍小于消息延迟阈值而使延迟检测结果表现为消息未发生延迟,相反的,如果将消息延迟阈值设置的较小,在一些处理时间较长的消息中,其会因为处理时间大于消息延迟阈值而使输出的延迟检测结果表示为消息延迟,而实际上其仅仅是因为本身实际处理时间较长,并不属于延迟,所以,将线程中所有消息的消息延迟阈值设置为相同后,对消息进行延迟检测时是不准确的。
而相同消息类型的消息的处理时间的长短又趋近于某一固定值,所以在对消息的消息延迟阈值的设定时,可根据消息的类型进行划分,即根据消息的类型设定不同类型的消息所对应的消息延迟阈值。
其中,消息延迟阈值可理解为消息正常处理所对应的最大值,当消息的处理时间大于或者消息延迟阈值,则认为消息的处理时间超时,即消息的处理发生延迟。
其中,根据消息的消息类型确定该消息的消息延迟阈值的方法有多种,例如,可根据消息类型与消息延迟阈值的映射关系确定消息类型所对应的消息延迟阈值,或者,先确定消息类型所对应的消息延迟阈值区间,然后,在该消息延迟阈值区间中确定该消息对应的消息延迟阈值,即,可选的,在一些实施例中,步骤“根据消息类型确定消息所对应的消息延迟阈值”,具体可以包括:
获取映射关系集合,映射关系集合包括预设消息类型与预设消息延迟阈值的映射关系;具体的,映射关系集合中包括了一种或多种预设的消息类型及每种消息类型所对应的消息延迟阈值的对应关系;
根据该映射关系集合和消息所对应的消息类型,确定该消息所对应的消息延迟阈值。
在获取到消息类型与消息延迟阈值的映射关系集合后,根据识别出消息的消息类型,从映射关系集合中确定消息所对应的消息延迟阈值。
其中,通过消息类型与消息延迟阈值的映射关系的建立,使消息类型和消息延迟阈值之间能够确定出唯一的对应关系,在获取到消息类型后,可直接快速的获取到与消息类型对应的消息延迟阈值,该种获取消息延迟阈值的方式较为快速且准确。
其中,由于映射关系集合中,与消息类型所对应的消息延迟阈值往往是根据维护人员的经验或者惯用的标准设定的,所以与消息类型所对应的消息延迟阈值往往是一个定值,但是,在实际开发或者应用中,不同的代码撰写标准或者撰写习惯,线程中消息的处理时间可能存在波动,所以固定的消息延迟阈值可能不再适用,或者,受限较大,因此,每种消息类型可以对应于一个消息延迟阈值区间,可以根据一定的条件在该消息延迟阈值区间中选择数值作为消息的消息延迟阈值,即,可选的,在一些实施例中,步骤“根据消息类型确定消息所对应的消息延迟阈值”,具体可以包括:
确定消息的消息类型所对应的消息延迟阈值区间;
根据该消息类型发生延迟的延迟频率,从该消息延迟阈值区间中确定消息所对应的消息延迟阈值。
其中,消息延迟阈值区间也是根据维护人员的经验进行设计的,例如,根据以往同类型的消息的处理时间,在较为集中的数据范围中确定一个消息延迟阈值的数值区间,即消息延迟阈值区间。
其中,消息延迟频率指消息发生延迟的频率,通过计算同种类型的消息发生延迟的频率,可了解到该种类型的消息是否经常发生延迟。其中,消息发生延迟可以是因为线程中消息派发或者执行过程的代码块设计的不合理,也可以是因为消息延迟阈值的设置存在不合理的情况,因此在假设代码块设计合理的情况下,可对消息延迟阈值的设置或者选取进行设计,来确保消息延迟阈值的设置是合理的,例如,本申请实施例中,通过延迟频率对消息延迟阈值进行选取,可选取到发生延迟频率较低的消息延迟阈值。
即,可选的,在一些实施例中,步骤“根据消息类型发生延迟的延迟频率,从消息延迟阈值区间中确定消息所对应的消息延迟阈值”,具体可以包括:
从消息延迟阈值区间中选取初始消息延迟阈值;
记录消息类型发生延迟的延迟频率;
根据延迟频率在消息延迟阈值区间内调整初始消息延迟阈值以得到消息对应的消息延迟阈值。
例如,在本申请实施例中,在通过消息类型确定对应的消息延迟阈值区间后,可先从消息延迟阈值中选择一个初始消息延迟阈值,然后根据该种消息类型发生延迟的延迟频率来调整初始消息延迟阈值在区间中的具体数值,从而得到消息的消息延迟阈值。例如,如果这类的消息类型发生延迟的延迟频率较高,则可能是因为初始消息延迟阈值的数值设置的太小,可在原有区间的范围内适当的调大初始消息延迟阈值的数值,得到最终的消息延迟阈值;相反,如果这类的消息类型发生延迟的延迟频率较低,则可能是因为初始消息延迟阈值的数值设置的太大,可在原有区间的范围内适当的调小初始消息延迟阈值的数值,其中,调大或者调小的幅度也可以根据延迟频率进行设置,在延迟频率较高或较低时,可适当的增大初始消息延迟阈值的调整幅度(例如,增大初始消息延迟阈值的调大的刻度或者调小的刻度),在延迟频率趋近于期望值且变化波动不大时,可适当的减小对于初始消息延迟阈值的调整幅度,甚至停止对初始消息延迟阈值的调整;通过初始消息延迟阈值的调整,使消息类型所对应的延迟频率趋近稳定且延迟频率数值偏低的状态。该种根据消息的延迟频率调整初始消息延迟阈值后得来的消息延迟阈值,可保证每种消息类型能对应一个准确的消息延迟阈值。
其中,同一消息类型的消息在派发和执行时所对应的消息延迟阈值可以不同,因此,也可以针对消息的派发设置派发时消息类型所对应的消息派发延迟阈值和针对消息的执行设置执行时消息类型所对应的消息执行延迟阈值,即同一消息类型在派发和执行时分别对应不同的消息延迟阈值,即,可选的,在一些实施例中,步骤“根据消息类型确定消息所对应的消息延迟阈值”,具体可以包括:
获取映射关系集合,映射关系集合包括预设消息类型、预设消息处理方式和预设消息延迟阈值的映射关系;
对消息的处理方式进行识别,得到消息的消息处理方式;
根据映射关系集合、消息类型和消息处理方式,确定消息所对应的消息延迟阈值。
其中,在本申请实施例中,消息处理方式可以包括消息的派发或者执行,当然,针对不同的消息类型,也可以包含其他的处理方式,在此不做限制。
在本申请实施例中,通过建立消息类型、消息处理方式和消息延迟阈值的映射关系,使不同消息类型的消息在不同消息处理方式下均能对应一个消息延迟阈值,例如,同一消息类型在派发时对应一个消息派发延迟阈值,在执行时对应一个消息执行延迟阈值。该种根据消息的消息类型和处理方式确定的消息延迟阈值,使消息延迟阈值的确定更加准确。
104、根据处理时间和消息延迟阈值,对消息进行延迟检测,得到消息的延迟检测结果。
其中,消息延迟检测结果包括消息处理延迟或者消息处理正常,当消息的处理时间大于或者等于消息的消息延迟阈值,则消息的延迟检测结果为消息的处理延迟,反之,则消息的处理正常。
其中,消息的处理时间包括消息从消息队列中被派发的派发延迟时间和消息从消息队列中被派发后执行的执行时间,当消息的派发延迟时间(即实际派发时间与期望派发时间的差值)大于或者等于消息的消息延迟阈值,则认为消息的派发超时,反之消息派发未超时;当消息的执行时间(即消息的结束执行时间与开始执行时间的差值)大于或者等于消息的消息延迟阈值,则认为消息的执行超时,即消息的执行发生了延迟,反之消息的执行未发生延迟。
其中,在本申请实施例中,消息的消息类型包括普通消息、绘制消息或生命周期消息,其中,普通消息指消息队列中无特性的消息,区别于绘制消息和生命周期消息,绘制消息指用于完成应用程序运行时绘制操作的消息,生命周期消息指消息处理过程具备生命周期的消息,生命周期指消息在线程处理过程中各个阶段的状态信息,当然,针对不同的应用或者需求,线程中消息的类型有所不同,或者有更加精细的划分,在此对消息类型的种类不做具体限定。
在本申请实施例中,当线程中消息类型为绘制消息时,绘制消息又包括单条绘制消息和多条连续绘制消息,其中,单条绘制消息指单条消息即可完成绘制操作,多条连续绘制消息指通过多条连续的消息的派发和执行完成连续的绘制操作,其中,单条绘制消息和多条连续绘制消息中的单条消息的延迟检测,与普通消息或者生命周期消息相同,单条绘制消息和多条连续绘制消息中的单条消息的派发延迟时间和执行时间的计算可参照上文中计算方法可得。
在本申请实施例中,针对多条连续绘制消息,其在执行时会存在一个连续的执行时间段,这个时间段内需要完成多条消息的连续的处理,但是,由于这种多条连续绘制消息在绘制过程中对其中一条或者两条的顺利处理的要求不高,其可以允许其中一条或者两条消息在处理时发生延迟,所以,针对这种多条连续绘制消息,可以设定消息延迟的延迟数量阈值,在达到该数量阈值后才确定延迟检测结果为消息的延迟,即,可选的,在一些实施例中,步骤“根据处理时间和消息延迟阈值,对消息进行延迟检测,得到消息的延迟检测结果”,具体可以包括:
当消息的类型为多条连续绘制消息,获取多条连续绘制消息的期望处理总时间;
根据期望处理总时间确定多条连续绘制消息的消息总数量;
获取多条连续绘制消息中每条消息的处理时间和消息延迟阈值,对每条消息进行延迟检测;
记录多条连续绘制消息中消息发生延迟的延迟消息数量;
获取预设消息总数量与预设延迟数量阈值的关联关系;
根据消息总数量与关联关系,得到多条连续绘制消息所对应的延迟数量阈值;
根据延迟消息数量和延迟数量阈值,得到多条连续绘制消息的延迟检测结果。
例如,一个多条连续绘制消息,连续绘制时间是2s,且2s内要绘制120帧(即120条消息),平均下来每帧的处理时间是16.66ms,所以只要其中一帧的处理时间大于16.66ms,则该多条连续绘制消息就会出现丢帧的情况,但是少量的丢帧对整体的绘制的影响是极小的,所以针对多条连续绘制消息情况下,单帧的绘制超时在得到的延迟检测结果中,延迟检测结果表示的可以是消息未延迟,但是当一个连续绘制消息中出现多帧绘制超时,对整体的连续绘制就会有明显的影响,因此,本申请针对多条连续绘制消息情况,设置了多帧处理超时的延迟数量阈值,例如,将延迟数量阈值设置为30,即连续绘制消息时超时的帧数超过或者等于30,例如2s内超时的帧数大于或者等于30,输出的多条连续绘制消息的延迟检测结果为消息延迟。
其中,延迟消息数量的具体数值可根据多条连续绘制消息的消息总数量进行设定,如果多条连续绘制消息的延迟检测结果为消息延迟的延迟频率较高,则可以适当的调整延迟数量阈值,例如,当延迟频率较高,则可以适当的增大延迟数量阈值,反之,如果延迟频率较低,为了能够更精确的检测到延迟情况,则可以适当的减小延迟数量阈值。
请参阅图6,对线程中消息的处理进行检测,当检测到消息的处理发生了延迟,则获取到与延迟消息相关的延迟信息,例如,以消息执行的检测为例,具体过程如下:
161、进行消息的执行;
162、识别出消息的消息类型,根据消息的消息类型确定消息的消息延迟阈值;
163、判断消息的执行是否发生了延迟,例如,根据执行时间与消息延迟阈值的比较来判断消息的执行是否发生了延迟;
164、当检测到消息的执行发生延迟时,记录发生延迟的延迟消息,获取到与延迟消息相关的延迟信息;
165、将延迟信息一并输出到终端。
其中,在消息处理发生延迟时,可获取到与延迟消息相关的延迟信息,保证消息延迟的准确定位,即,可选的,在一些实施例中,该方法还包括:
若消息的延迟检测结果为消息延迟,则获取运行应用程序的设备信息及消息发生延迟的延迟信息;
输出设备信息及延迟信息。
其中,维护人员可以根据设备信息和延迟信息对线程中的具体代码块进行调整,方便维护人员能够快速的找到发生延迟的具体原因,加速对延迟的处理,保证应用程序运行的流畅性。
其中,延迟信息包括卡顿发生的时间点、卡顿所处进程名、应用版本信息、卡顿类型、卡顿消息的发送者、卡顿消息的接收者、卡顿消息的消息号、卡顿时长信息、方法堆栈信息或***资源信息等。当消息类型为多条连续绘制消息,则延迟信息还包括视图信息(view)和环境信息等。
其中,卡顿时长信息为消息处理时间信息,卡顿消息的发送者指将消息放入到消息队列中的对象(如Android中的Handler)或者将消息从消息队列中取出的对象(如Android中的Looper),卡顿消息的处理者指接受消息的对象(如Android中的Handler),其中,消息的执行是在Handler所在的线程中,通过将与延迟消息相关的延迟信息的返回,可方便维护人员及时快速的做出针对性的调整,其中,View类是(安卓)Android的一个超类,这个类几乎包含了所有的屏幕类型。每一个View都有一个用于绘图的画布,这个画布可以进行任意扩展,其中,环境信息包括线程ID、线程的代码段、线程的堆栈等,其中,Handler直接继承Object,一个Handler允许发送和处理消息(Message)或者Runnable接口对象,并且会关联到主线程的消息队列(MessageQueue)中,Looper用来为一个线程开启一个消息循环,默认情况下安卓(android)中新诞生的线程是没有开启消息循环的,(主线程除外,主线程***会自动为其创建Looper对象,开启消息循环)Looper对象通过消息队列(MessageQueue)来存放消息和事件,一个线程只能有一个Looper,对应一个消息队列(MessageQueue)。
其中,不同消息可能使用的资源不同,所以在延迟或者卡顿发生的时候记录下消息处理时的***资源信息,根据***资源的占用情况和消耗情况,有利于定位是什么原因导致的延迟或者卡顿,即,可选的,在一些实施例中,步骤“获取消息的***资源信息”,具体可以包括:
获取消息在派发或者执行时所使用的***资源类型;
获取消息在派发前后或者执行前后的各种***资源类型所对应的资源总量;
根据消息在派发前后或者执行前后的各种***资源类型所对应的资源总量,确定消息派发或者执行前后各种***资源类型所对应的消耗量。
其中,***资源信息包括***资源类型和***资源的消耗量,***的资源类型包括中央处理器(CPU,central processing unit)资源、输入/输出(IO,Input/Output)资源或内存资源,通过***资源类型的获取,可获取到消息延迟时***资源类型的占用情况,如图6所示,具体包括:
166、记录消息派发前后或者执行前后的***资源信息;
167、根据消息派发前后或者执行前后的***资源信息,获取派发或者执行消息的***资源消耗量。
其中,通过每种***资源类型所对应的***资源的消耗量的计算,可获取到每种***资源类型所对应的***资源的消耗情况,方便根据***资源类型的占用情况和***资源消耗量对消息延迟或者卡顿发生的具体原因进行分析和定位,并且,被占用的***资源类型和资源总量也是方便识别和统计的。
在一些实施例中,由于线程的消息队列中存储有多条消息,这些消息是排队存储在消息队列中,一个个等待被派发然后执行,因此如果线程中一条消息在派发或者执行过程中发生延迟,则后续的消息在派发时也可能会出现延迟,因此,针对这种情况,可以只记录后续的消息派发超时的数量以及记录导致后面一系列消息派发超时的延迟消息的详细信息(延迟信息);另外,消息队列中各消息期望被派发的时间之间可能存在较大的时间差,所以也存在前一个消息派发延迟而后一个消息派发正常的情况,例如,前一个消息的期望派发时间是八点,派发延迟时间是50ms,而下一个消息的期望派发时间是八点零一分,则前一个消息的派发延迟不影响下一个消息的派发,即,由于后续消息的派发时间与前一条消息的派发时间的时间差大于前一条消息的派发延迟时间,后续的消息的派发不会因为前一条消息的派发延迟而出现延迟。
本申请针对线程中每种消息的消息类型设置有不同的消息延迟阈值,使每个消息均能对应一个消息延迟阈值,本申请的针对每个消息的消息延迟阈值的设置,更有利于对每条消息的延迟的精准检测,并且,根据消息延迟阈值与消息的处理时间得到消息延迟检测结果,当消息的处理时间大于或者等于消息延迟阈值时,认定消息延迟检测结果为消息延迟,并在消息延迟后收集到与延迟消息相关联的延迟信息,方便管理人员能够根据延迟信息确定发生延迟的具体的位置和原因,方便对其快速的调整,保证***的流畅性,另外,本申请实施例通过对线程中消息在处理时的延迟的检测,能够精准的获取到线程中每条消息的延迟情况,使消息延迟检测的粒度更加精细,提高消息延迟定位的准确性,例如,能精确的检测到线程中具体是哪条消息的派发或者执行造成的延迟。
根据实施例的方法,以下将举例进一步详细说明。
在本实施例中将以该消息延迟检测装置具体集成在服务器中为例进行说明。
请参阅图7,一种消息延迟检测方法,具体流程可以如下:
201、当终端***中应用程序的目标线程执行时,服务器获取目标线程中消息对应的处理时间。
需要说明的是,消息的处理时间包括消息从目标线程的消息队列中被派发的派发延迟时间或消息从目标线程的消息队列中被派发后执行的执行时间。
其中,当消息的处理时间为消息派发延迟时间,服务器在消息进入消息队列时设置并记录消息的期望派发时间,并且,服务器在消息从消息队列中被派发时,即消息从消息队列中出队时,记录消息被派发的实际派发时间,最后,服务器计算消息的实际派发时间与期望派发时间的差值,并将该差值确定为消息派发延迟的派发延迟时间。
在本申请实施例中,当消息的处理时间为消息的执行时间,服务器在消息开始执行时,即消息从消息队列中被派发出消息队列时,记录此时的时间确定为消息开始执行时间,并且,服务器在消息执行结束时,记录此时的时间确定为消息的结束执行时间,最后,服务器计算消息的结束执行时间和开始执行时间的差值,并将该差值确定为消息执行的执行时间。
202、服务器对目标线程中消息进行类型识别,得到消息的消息类型。
例如,具体的,服务器可以从处理的消息中提取出消息的消息标识(如消息号或者消息唯一编码)和消息的处理线程的类型,根据消息标识和消息的处理线程的类型确定消息的类型。
203、服务器根据消息类型确定消息所对应的消息延迟阈值。
其中,线程中不同消息的处理时间的长短可能不同,如果将线程中所有消息的消息延迟阈值设置为相同的,那么在对消息延迟检测时会出现检测结果不准确的问题,而相同类型的消息的处理时间的长短又趋近于某一固定值,所以,在对消息的消息延迟阈值的设定时,可根据消息的类型进行划分,即根据消息的类型设定不同类型的消息所对应的消息延迟阈值,其中,每种消息类型的消息延迟阈值根据实际应用或者需求进行设定,并存储在服务器中,随后,服务器在获取到消息后,根据对消息识别后得出的消息类型,获取到消息类型所对应的消息延迟阈值。
其中,消息延迟阈值可以是与消息类型存在一一映射关系的固定值,也可以是一个区间,从区间中选取一个值作为消息延迟阈值,其中消息延迟阈值的选取可以是根据消息类型发生延迟的延迟频率来调整。
204、根据处理时间和消息延迟阈值,对消息进行延迟检测,得到消息的延迟检测结果。
在本申请实施例中,服务器根据消息的处理时间和消息所对应的消息延迟阈值得到消息的延迟检测结果,并在处理时间和消息延迟阈值比较后,得到延迟检测结果的最终结果,例如,在消息的处理时间大于或者等于消息的消息延迟阈值后,则认为消息发生了延迟,并将消息的延迟相关的延迟信息进行输出,输出到终端,由维护人员根据服务器输出的延迟检测结果和延迟信息对延迟发生的代码块进行分析调整。
本申请服务器针对每种消息的类型的不同,设置有不同的消息延迟阈值,使每个消息均能对应一个消息延迟阈值,服务器针对每个消息的消息延迟阈值的设置,更有利于对每个消息的延迟的精准检测,并且,服务器根据消息延迟阈值和消息的处理时间得到延迟检测结果,并通过将该消息延迟阈值与消息的处理时间进行比较,判断出消息在线程中的处理是否发生了延迟的结果,并在检测到消息发生了延迟后,服务器能够返回该延迟消息的延迟信息,方便管理人员能够根据服务器返回的延迟检测结果和延迟信息确定发生延迟的具体的位置和原因,方便对发生延迟的位置(包括具体的代码块等)进行快速的调整,保证***的流畅性,另外,服务器通过对线程中消息在处理时的延迟的检测,能够精准的获取到线程中每个消息的延迟情况,使消息延迟检测的粒度更加精细,提高消息延迟定位的准确性。
为便于更好的实施本申请的消息延迟检测方法,本申请还提供一种基于上述消息延迟检测装置。其中名词的含义与上述消息延迟检测方法中相同,具体实现细节可以参考方法实施例中的说明。
请参阅图8,图8为本申请提供的消息延迟检测装置的结构示意图,其中该消息延迟检测装置可以包括获取模块301、识别模块302、确定模块303、分析模块304。可选地,还可以包含反馈模块305。具体可以如下:
获取模块301,用于当终端***中应用程序的目标线程执行时,获取目标线程中消息对应的处理时间。
可选的,在本发明的一些实施例中,处理时间包括消息从目标线程的消息队列中被派发的派发延迟时间,获取目标线程中消息对应的处理时间具体用于:
当目标线程中的消息进入消息队列时,确定消息从消息队列中被派发的期望派发时间;
当消息被派发出消息队列时,获取消息从消息队列中被派发的实际派发时间;
根据实际派发时间和期望派发时间生成消息的派发延迟时间。
可选的,在本发明的一些实施例中,处理时间包括消息从目标线程的消息队列中被派发后执行的执行时间,获取目标线程中消息对应的处理时间具体用于:
当目标线程中的消息被派发后开始执行时,获取消息的开始执行时间;
当消息执行结束时,获取消息的结束执行时间;
根据开始执行时间和结束执行时间生成消息的执行时间。
识别模块302,用于对目标线程中消息进行类型识别,得到消息的消息类型。
确定模块303,用于根据消息类型确定消息所对应的消息延迟阈值。
可选的,在本发明的一些实施例中,确定模块303具体可以包括:
第一获取单元,用于获取映射关系集合,映射关系集合包括预设消息类型与预设消息延迟阈值的映射关系;
第一确定单元,用于根据映射关系集合和消息类型,确定消息所对应的消息延迟阈值。
可选的,在本发明的一些实施例中,确定模块303还包括:
第二确定单元,用于确定消息类型对应的消息延迟阈值区间;
第三确定单元,用于根据消息类型发生延迟的延迟频率,从消息延迟区间中确定消息所对应的消息延迟阈值。
可选的,在本发明的一些实施例中,第三确定单元包括:
选取子单元,用于从所述消息延迟阈值区间中选取初始消息延迟阈值;
记录子单元,用于记录所述消息类型发生延迟的延迟频率;
调整子单元,用于根据所述延迟频率在所述消息延迟阈值区间内对所述初始消息延迟阈值进行调整以得到所述消息所对应的消息延迟阈值。
分析模块304,用于根据处理时间和消息延迟阈值,对消息进行延迟检测,得到消息的延迟检测结果。
可选的,在本发明的一些实施例中,消息延迟检测装置还可以包括反馈模块305,具体的反馈模块可以包括:
第二获取单元,用于若消息的延迟检测结果为消息延迟,则获取运行应用程序的设备信息及消息发生延迟的延迟信息;
第一输出单元,用于输出设备信息及延迟信息。
本申请由获取模块301获取到应用程序运行时,线程中消息的处理时间,然后,由识别模块302提取出消息的类型,接着,由确定模块303根据消息的消息类型确定消息的消息延迟阈值,最后,分析模块304根据消息的处理时间与消息的消息延迟阈值,生成消息的延迟检测结果,其中消息延迟检测结果可以是消息延迟或者消息未延迟,并且在确定了消息延迟检测结果为消息延迟时,可以利用反馈模块305输出消息延迟的延迟信息,方便维护人员获取到该延迟信息,并根据延迟信息对消息延迟进行准确定位。本申请提供的消息延迟检测方案利用消息的消息类型,确定消息的消息延迟阈值,使每个消息均分别对应一个消息延迟阈值,本申请针对每个消息的消息延迟阈值的设置,有利于对每条消息的延迟的精准检测,另外,通过对线程中消息在处理时的延迟的检测,能够精准的获取到线程中每条消息的处理情况,使消息延迟检测的粒度更加精细。
此外,本申请还提供一种电子设备,如图9所示,其示出了本申请所涉及的电子设备的结构示意图,具体来讲:
该电子设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图9中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器401是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
电子设备还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理***与处理器401逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电***、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该电子设备还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,电子设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,电子设备中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
获取线程中消息处理所用的处理时间,提取消息的类型及消息在线程中的处理方式,根据消息的类型及消息在线程中的处理方式确定消息在处理方式中所对应的延迟阈值,若消息在处理方式中的处理时间大于或者等于消息在处理方式中所对应的延迟阈值,则返回用于反映消息延迟的检测结果,若消息在处理方式中的处理时间小于消息在处理方式中所对应的延迟阈值,则返回用于反映消息处理正常的检测结果。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
本申请针对每种消息的类型及消息在线程中处理方式的不同,设置有不同的延迟阈值,使每个消息均能对应一个延迟阈值,相较于传统的对一个线程中各个消息进行统一阈值的设定,本申请的针对每个消息的延迟阈值的设置,更有利于对每条消息的延迟的精准检测,避免因为每条消息的处理时间的不同而容易形成延迟检测不合理的情况发生,并通过将该延迟阈值与消息的处理时间进行比较,判断出消息在线程中的处理是否发生了延迟的结果,并在检测到发生了延迟后,能够返回该消息的延迟信息,即检测结果,方便管理人员能够根据延迟信息确定发生延迟的具体的代码块,方便对其快速的调整,保证***的流畅性,另外,本发明通过对线程中消息在处理时的延迟的检测,能够精准的获取到线程中每条消息的处理情况,相较于传统的对整个线程的处理情况的检测,本发明检测的粒度更加精细,也更能发现到线程卡顿的具体问题。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请所提供的任一种消息延迟检测方法中的步骤。例如,该指令可以执行如下步骤:
获取线程中消息处理所用的处理时间,提取消息的类型及消息在线程中的处理方式,根据消息的类型及消息在线程中的处理方式确定消息在处理方式中所对应的延迟阈值,若消息在处理方式中的处理时间大于或者等于消息在处理方式中所对应的延迟阈值,则返回用于反映消息延迟的检测结果,若消息在处理方式中的处理时间小于消息在处理方式中所对应的延迟阈值,则返回用于反映消息处理正常的检测结果。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本申请所提供的任一种消息延迟检测方法中的步骤,因此,可以实现本申请所提供的任一种消息延迟检测方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请所提供的一种消息延迟检测方法、装置、电子设备以及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种消息延迟检测方法,其特征在于,包括:
当终端***中应用程序的目标线程执行时,获取所述目标线程中消息对应的处理时间;
对所述目标线程中所述消息进行类型识别,得到所述消息的消息类型;
根据所述消息类型确定所述消息所对应的消息延迟阈值;
根据所述处理时间和所述消息延迟阈值,对所述消息进行延迟检测,得到所述消息的延迟检测结果。
2.根据权利要求1所述的方法,其特征在于,所述根据所述消息类型确定所述消息所对应的消息延迟阈值,包括:
获取映射关系集合,所述映射关系集合包括预设消息类型与预设消息延迟阈值的映射关系;
根据所述映射关系集合和所述消息类型,确定所述消息所对应的消息延迟阈值。
3.根据权利要求1所述的方法,其特征在于,所述根据所述消息类型确定所述消息所对应的消息延迟阈值,包括:
确定所述消息类型对应的消息延迟阈值区间;
根据所述消息类型发生延迟的延迟频率,从所述消息延迟阈值区间中确定所述消息所对应的消息延迟阈值。
4.根据权利要求3所述的方法,其特征在于,所述根据所述消息类型发生延迟的延迟频率,从所述消息延迟阈值区间中确定所述消息所对应的消息延迟阈值,包括:
从所述消息延迟阈值区间中选取初始消息延迟阈值;
记录所述消息类型发生延迟的延迟频率;
根据所述延迟频率在所述消息延迟阈值区间内对所述初始消息延迟阈值进行调整以得到所述消息所对应的消息延迟阈值。
5.根据权利要求1所述的方法,其特征在于,所述处理时间包括消息从所述目标线程的消息队列中被派发的派发延迟时间,所述获取所述目标线程中消息对应的处理时间,包括:
当所述目标线程中的所述消息进入消息队列时,确定所述消息从所述消息队列中被派发的期望派发时间;
当所述消息被派发出所述消息队列时,获取所述消息从所述消息队列中被派发的实际派发时间;
根据所述实际派发时间和所述期望派发时间生成所述消息的派发延迟时间。
6.根据权利要求1所述的方法,其特征在于,所述处理时间包括消息从所述目标线程的消息队列中被派发后执行的执行时间,所述获取所述目标线程中消息对应的处理时间,包括:
当所述目标线程中的所述消息被派发后开始执行时,获取所述消息的开始执行时间;
当所述消息执行结束时,获取所述消息的结束执行时间;
根据所述开始执行时间和所述结束执行时间生成所述消息的执行时间。
7.根据权利要求1所述的方法,其特征在于,所述根据所述处理时间和所述消息延迟阈值,对所述消息进行延迟检测,得到所述消息的延迟检测结果之后,还包括:
若所述消息的延迟检测结果为消息延迟,则获取运行所述应用程序的设备信息及所述消息发生延迟的延迟信息;
输出所述设备信息及所述延迟信息。
8.一种消息延迟检测装置,其特征在于,包括:
获取模块,用于当终端***中应用程序的目标线程执行时,获取所述目标线程中消息对应的处理时间;
识别模块,用于对所述目标线程中所述消息进行类型识别,得到所述消息的消息类型;
确定模块,用于根据所述消息类型确定所述消息所对应的消息延迟阈值;
分析模块,用于根据所述处理时间和所述消息延迟阈值,对所述消息进行延迟检测,得到所述消息的延迟检测结果。
9.一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如权利要求1-7任一项所述消息延迟检测方法的步骤。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1-7任一项所述消息延迟检测方法的步骤。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110762437.9A CN113595814A (zh) | 2021-07-06 | 2021-07-06 | 消息延迟检测方法、装置、电子设备及存储介质 |
PCT/CN2022/091169 WO2023279829A1 (zh) | 2021-07-06 | 2022-05-06 | 消息延迟检测方法、装置、电子设备及存储介质 |
GB2401394.8A GB2623692A (en) | 2021-07-06 | 2022-05-06 | Message delay detection method and apparatus, electronic device, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110762437.9A CN113595814A (zh) | 2021-07-06 | 2021-07-06 | 消息延迟检测方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113595814A true CN113595814A (zh) | 2021-11-02 |
Family
ID=78246284
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110762437.9A Pending CN113595814A (zh) | 2021-07-06 | 2021-07-06 | 消息延迟检测方法、装置、电子设备及存储介质 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN113595814A (zh) |
GB (1) | GB2623692A (zh) |
WO (1) | WO2023279829A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023279829A1 (zh) * | 2021-07-06 | 2023-01-12 | 深圳Tcl新技术有限公司 | 消息延迟检测方法、装置、电子设备及存储介质 |
Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6442139B1 (en) * | 1998-01-29 | 2002-08-27 | At&T | Adaptive rate control based on estimation of message queuing delay |
US20120151589A1 (en) * | 2010-12-14 | 2012-06-14 | General Electric Company | Intelligent system and method for mitigating cyber attacks in critical systems through controlling latency of messages in a communications network |
US20130081001A1 (en) * | 2011-09-23 | 2013-03-28 | Microsoft Corporation | Immediate delay tracker tool |
CN104978232A (zh) * | 2014-04-09 | 2015-10-14 | 阿里巴巴集团控股有限公司 | 用于实时流式计算的计算资源扩容、释放方法及其装置 |
WO2018048999A1 (en) * | 2016-09-09 | 2018-03-15 | Chicago Mercantile Exchange Inc. | Message cancelation based on data transaction processing system latency |
CN108388479A (zh) * | 2018-02-10 | 2018-08-10 | 深圳壹账通智能科技有限公司 | 延迟消息推送方法、装置、计算机设备及存储介质 |
CN109379247A (zh) * | 2018-09-27 | 2019-02-22 | 腾讯科技(深圳)有限公司 | 一种对应用程序的网络延时进行检测的方法及装置 |
CN109560976A (zh) * | 2017-09-25 | 2019-04-02 | 北京国双科技有限公司 | 一种消息延迟的监控方法及装置 |
CN109753321A (zh) * | 2019-01-11 | 2019-05-14 | 武汉瓯越网视有限公司 | 基于协议注册的应用启动方法、装置、终端和存储介质 |
US20190163545A1 (en) * | 2017-11-30 | 2019-05-30 | Oracle International Corporation | Messages with delayed delivery in an in-database sharded queue |
WO2019125642A1 (en) * | 2017-12-22 | 2019-06-27 | Microsoft Technology Licensing, Llc | Data protection using alerts to delay transmission |
CN110099013A (zh) * | 2019-04-25 | 2019-08-06 | 新华三技术有限公司 | 一种报文发送控制方法及装置 |
US20190349309A1 (en) * | 2018-05-08 | 2019-11-14 | Chicago Mercantile Exchange Inc. | Enforcement of latency determinism across a computer network |
CN110995618A (zh) * | 2019-10-30 | 2020-04-10 | 北京奇艺世纪科技有限公司 | 一种消息处理方法、装置、电子设备及可读存储介质 |
CN112787958A (zh) * | 2021-01-05 | 2021-05-11 | 北京字跳网络技术有限公司 | 延迟消息处理方法及设备 |
CN112925661A (zh) * | 2021-03-09 | 2021-06-08 | 广州虎牙科技有限公司 | 消息处理方法、装置、计算机设备及存储介质 |
CN113064707A (zh) * | 2021-03-31 | 2021-07-02 | 腾讯科技(深圳)有限公司 | 一种消息处理方法、装置及设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108153596A (zh) * | 2017-12-15 | 2018-06-12 | 珠海金山网络游戏科技有限公司 | 一种基于无锁队列的消息处理方法和装置 |
CN111949497B (zh) * | 2020-06-23 | 2024-04-12 | 贝壳技术有限公司 | 消息队列***以及基于消息队列***的消息处理方法 |
CN113595814A (zh) * | 2021-07-06 | 2021-11-02 | 深圳Tcl新技术有限公司 | 消息延迟检测方法、装置、电子设备及存储介质 |
-
2021
- 2021-07-06 CN CN202110762437.9A patent/CN113595814A/zh active Pending
-
2022
- 2022-05-06 GB GB2401394.8A patent/GB2623692A/en active Pending
- 2022-05-06 WO PCT/CN2022/091169 patent/WO2023279829A1/zh unknown
Patent Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6442139B1 (en) * | 1998-01-29 | 2002-08-27 | At&T | Adaptive rate control based on estimation of message queuing delay |
US20120151589A1 (en) * | 2010-12-14 | 2012-06-14 | General Electric Company | Intelligent system and method for mitigating cyber attacks in critical systems through controlling latency of messages in a communications network |
US20130081001A1 (en) * | 2011-09-23 | 2013-03-28 | Microsoft Corporation | Immediate delay tracker tool |
CN104978232A (zh) * | 2014-04-09 | 2015-10-14 | 阿里巴巴集团控股有限公司 | 用于实时流式计算的计算资源扩容、释放方法及其装置 |
WO2018048999A1 (en) * | 2016-09-09 | 2018-03-15 | Chicago Mercantile Exchange Inc. | Message cancelation based on data transaction processing system latency |
CN109560976A (zh) * | 2017-09-25 | 2019-04-02 | 北京国双科技有限公司 | 一种消息延迟的监控方法及装置 |
US20190163545A1 (en) * | 2017-11-30 | 2019-05-30 | Oracle International Corporation | Messages with delayed delivery in an in-database sharded queue |
WO2019125642A1 (en) * | 2017-12-22 | 2019-06-27 | Microsoft Technology Licensing, Llc | Data protection using alerts to delay transmission |
CN108388479A (zh) * | 2018-02-10 | 2018-08-10 | 深圳壹账通智能科技有限公司 | 延迟消息推送方法、装置、计算机设备及存储介质 |
US20190349309A1 (en) * | 2018-05-08 | 2019-11-14 | Chicago Mercantile Exchange Inc. | Enforcement of latency determinism across a computer network |
CN109379247A (zh) * | 2018-09-27 | 2019-02-22 | 腾讯科技(深圳)有限公司 | 一种对应用程序的网络延时进行检测的方法及装置 |
CN109753321A (zh) * | 2019-01-11 | 2019-05-14 | 武汉瓯越网视有限公司 | 基于协议注册的应用启动方法、装置、终端和存储介质 |
CN110099013A (zh) * | 2019-04-25 | 2019-08-06 | 新华三技术有限公司 | 一种报文发送控制方法及装置 |
CN110995618A (zh) * | 2019-10-30 | 2020-04-10 | 北京奇艺世纪科技有限公司 | 一种消息处理方法、装置、电子设备及可读存储介质 |
CN112787958A (zh) * | 2021-01-05 | 2021-05-11 | 北京字跳网络技术有限公司 | 延迟消息处理方法及设备 |
CN112925661A (zh) * | 2021-03-09 | 2021-06-08 | 广州虎牙科技有限公司 | 消息处理方法、装置、计算机设备及存储介质 |
CN113064707A (zh) * | 2021-03-31 | 2021-07-02 | 腾讯科技(深圳)有限公司 | 一种消息处理方法、装置及设备 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023279829A1 (zh) * | 2021-07-06 | 2023-01-12 | 深圳Tcl新技术有限公司 | 消息延迟检测方法、装置、电子设备及存储介质 |
GB2623692A (en) * | 2021-07-06 | 2024-04-24 | Shenzhen Tcl New Tech Co Ltd | Message delay detection method and apparatus, electronic device, and storage medium |
Also Published As
Publication number | Publication date |
---|---|
GB2623692A (en) | 2024-04-24 |
GB202401394D0 (en) | 2024-03-20 |
WO2023279829A1 (zh) | 2023-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108763012B (zh) | 卡顿信息获取方法、装置及终端 | |
WO2019062460A1 (zh) | 应用控制方法、装置、存储介质以及电子设备 | |
CN112005218A (zh) | 一种图像处理器的功率分配的方法、装置及*** | |
CN107045475B (zh) | 测试方法和装置 | |
CN114223189B (zh) | 时长统计方法、装置、电子设备和计算机可读介质 | |
CN111813520A (zh) | 线程调度方法、装置、存储介质及电子设备 | |
CN107943570B (zh) | 应用管理方法、装置、存储介质及电子设备 | |
CN113792341A (zh) | 应用程序的隐私合规自动化检测方法、装置、设备及介质 | |
US20200192709A1 (en) | Analysis node, method for managing resources, and program recording medium | |
CN115576534A (zh) | 原子服务的编排方法、装置、电子设备及存储介质 | |
CN113595814A (zh) | 消息延迟检测方法、装置、电子设备及存储介质 | |
CN108415765B (zh) | 任务调度方法、装置及智能终端 | |
CN113190427A (zh) | 卡顿监控方法、装置、电子设备及存储介质 | |
WO2023151498A1 (zh) | 一种消息执行处理方法、装置、电子设备和存储介质 | |
CN115422094B (zh) | 算法自动化测试方法、中心调度设备及可读存储介质 | |
CN108989244B (zh) | 数据处理方法、装置、存储介质及电子设备 | |
CN111831439A (zh) | Io请求的处理方法、装置、存储介质及电子设备 | |
US20180123866A1 (en) | Method and apparatus for determining event level of monitoring result | |
CN113419880B (zh) | 云手机根权限获取方法、相关装置及计算机程序产品 | |
CN114489892A (zh) | 数据处理方法、装置、计算机可读存储介质和计算机设备 | |
CN114780218A (zh) | 应用管控方法、装置、存储介质及电子设备 | |
CN113556649A (zh) | 智能音箱的播报控制方法和装置 | |
CN110865937A (zh) | 一种应用测试方法、装置和存储介质 | |
CN114217969A (zh) | 一种执行函数执行方法及相关设备 | |
CN113760431B (zh) | 应用程序的控制方法、装置、电子设备及可读存储介质 |
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 |