一种业务堆栈信息的采集方法、装置、设备及介质与流程
未命名
10-18
阅读:322
评论:0
1.本发明涉及信息收集领域,尤其涉及一种业务堆栈信息的采集方法、装置、设备及介质。
背景技术:
2.随着java开发的大型应用系统越来越大,越来越复杂,很多系统集成在一起,整个系统看起来像个黑盒子。用户的java应用在机器上运行期间,对机器造成的性能压力的内容往往是无感的,只能凭经验去猜测,导致想对应用进行优化往往会比较困难。尤其是不同的应用不同的环境产生的瓶颈可能不尽相同。
3.对于大型应用往往无法准确的创建模拟环境,无法真实的反应应用运行期间的真实情况,而一般在打印java应用对应的jvm线程堆栈信息时,需要先登录到目标服务器,然后调用jdk提供的jstack工具来打印。这种方法在应用规模和服务器数据不多的情况下没什么问题,但如果是大型的分布式复杂应用,服务器数量庞大,再加上采用当前流行的docker部署模式,需要找到目标服务器并登陆上去是一件麻烦的事情;另外在大型应用中,服务器部署安全管控严格,一般的开发人员不具备登录服务器的权限,要想获取jvm线程堆栈信息,只能向运维人员申请操作,往往错过了获取信息的最佳时机。
4.另一种获取jvm线程堆栈信息的方法是可以利用jdk提供的managementfactory.getthreadmxbean接口方法来采集,但这种方法需要开发人员事先编写代码并暴露接口来实现采集,而这种方式不仅破坏了业务代码的整洁性,同时也往往会成为性能损耗的产生方,在大部分正常情况下,反而拖累应用系统的性能,对于用户系统性能的损耗较大。
技术实现要素:
5.本发明提供了一种业务堆栈信息的采集方法、装置、设备及介质,可以解决现有技术在获取堆栈信息时即时性较差,拖累应用系统的性能,对于用户系统性能的损耗较大的问题。
6.第一方面,本发明实施例提供了一种业务堆栈信息的采集方法,该方法包括:
7.每当到达预设的堆栈信息采集周期时,检测操作系统中是否运行有至少一个用户业务;
8.若是,则获取所述操作系统当前的系统运行状态以及与每个用户业务分别匹配的至少一个用户业务线程;
9.根据所述系统运行状态,确定在当前的信息采集周期下的信息采集间隔,并按照所述信息采集间隔,对所述操作系统中与各用户业务线程对应的堆栈信息进行采集;
10.将采集到的各所述堆栈信息按照用户业务线程进行分组,得到与每个用户业务线程分别对应的堆栈信息集;
11.将各所述堆栈信息集分别绑定至与用户业务线程对应的用户业务中,得到业务信息集。
12.第二方面,本发明实施例提供了一种业务堆栈信息的采集装置,该装置包括:
13.业务检测模块,用于每当到达预设的堆栈信息采集周期时,检测操作系统中是否运行有至少一个用户业务;
14.业务线程获取模块,用于若是,则获取所述操作系统当前的系统运行状态以及与每个用户业务分别匹配的至少一个用户业务线程;
15.信息采集模块,用于根据所述系统运行状态,确定在当前的信息采集周期下的信息采集间隔,并按照所述信息采集间隔,对所述操作系统中与各用户业务线程对应的堆栈信息进行采集;
16.信息分组模块,用于将采集到的各所述堆栈信息按照用户业务线程进行分组,得到与每个用户业务线程分别对应的堆栈信息集;
17.信息绑定模块,用于将各所述堆栈信息集分别绑定至与用户业务线程对应的用户业务中,得到业务信息集。
18.第三方面,本发明实施例提供了一种电子设备,所述电子设备包括:
19.至少一个处理器;以及
20.与所述至少一个处理器通信连接的存储器;其中,
21.所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的业务堆栈信息的采集方法。
22.第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的业务堆栈信息的采集方法。
23.本发明实施例的技术方案,通过检测到操作系统中运行有至少一个用户业务时,获取操作系统当前的系统运行状态以及与每个用户业务分别匹配的至少一个用户业务线程,之后根据系统运行状态,确定在当前的信息采集周期下的信息采集间隔,并按照信息采集间隔,对操作系统中与各用户业务线程对应的堆栈信息进行采集,之后将采集到的各堆栈信息按照用户业务线程进行分组,得到与每个用户业务线程分别对应的堆栈信息集,最后将各堆栈信息集分别绑定至与用户业务线程对应的用户业务中,得到业务信息集,解决了现有技术在获取堆栈信息时即时性较差,拖累应用系统的性能,对于用户系统性能的损耗较大的问题,实现了对业务堆栈信息的实时采集,保证了堆栈信息的即时性,减少了堆栈信息采集对于用户系统性能的损耗。
24.应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其他特征将通过以下的说明书而变得容易理解。
附图说明
25.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
26.图1是根据本发明实施例一提供的一种业务堆栈信息的采集方法的流程图;
27.图2是根据本发明实施例二提供的一种业务堆栈信息的采集方法的流程图;
28.图3是根据本发明实施例三提供的一种业务堆栈信息的采集装置的结构示意图;
29.图4是实现本发明实施例的业务堆栈信息的采集方法的电子设备的结构示意图。
具体实施方式
30.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
31.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
32.实施例一
33.图1为本发明实施例一提供的一种业务堆栈信息的采集方法的流程图,本实施例可适用于对用户业务的堆栈信息进行采集的情况,该方法可以由业务堆栈信息的采集装置来执行,该业务堆栈信息的采集装置可以采用硬件和/或软件的形式实现,该业务堆栈信息的采集装置可配置于具有业务堆栈信息的采集功能的终端或服务器中。
34.如图1所示,该方法包括:
35.s110、每当到达预设的堆栈信息采集周期时,检测操作系统中是否运行有至少一个用户业务。
36.其中,所述预设的采集周期的时间长度可以由人工进行预设与调整。
37.其中,所述堆栈为:一个特定的存储区或寄存器,它的一端是固定的,另一端是浮动的。堆这个存储区存入的数据,是一种特殊的数据结构。所有的数据存入或取出,只能在浮动的一端进行,严格按照“先进后出”的原则存取,位于其中间的元素,必须在其栈上部诸元素逐个移出后才能取出,即堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场;进一步的,所述堆栈信息为所述堆区和栈区中所存储的与用户业务有关的变量数据;在本实施例中,用户的java应用在机器上运行期间,对机器造成的性能压力的具体内容可以通过堆栈信息的具体数据而获得,故可以使用获取的堆栈信息获取用户应用在工作时间内的性能压力所在的相关信息,以对所述用户系统的性能做出优化。
38.其中,所述操作系统是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等;在本实施例中,所述操作系统具体可以为:microsoft windows,macos,linux,google chrome os以及华为鸿蒙系统等可以配置于终端或服务器的基础性软件,本实施例对此不做限制。
39.其中,所述用户业务可以为配置在当前操作系统中的,经由用户操作触发启动并运行的具有一定功能的应用程序;进一步的,所述应用程序指为完成某项或多项特定工作的计算机程序,它运行在用户模式,可以和用户进行交互,具有可视的用户界面。
40.s120、检测到操作系统中运行有至少一个用户业务,获取所述操作系统当前的系统运行状态以及与每个用户业务分别匹配的至少一个用户业务线程。
41.其中,所述线程为与当前用户业务匹配的线程;具体的,所述线程是操作系统能够进行运算调度的最小单位。它被包含在用户业务之中,是用户业务中的实际运作单位。一条线程指的是用户业务中一个单一顺序的控制流,一个用户业务中可以并发多个线程,每条线程并行执行不同的任务,即一个用户业务包含至少一个线程。
42.进一步的,在本实施例中,当检测到操作系统中运行有至少一个用户业务后,用户可以通过系统后台拉取所述用户业务包含的全部线程的线程名称,同时,用户可以通过点触操作对全部线程进行选中或删除,以得到需要进行堆栈数据收集的相关线程作为用户与当前用户业务匹配的用户业务线程。
43.其中,所述系统运行状态包括:内存使用率。
44.在本实施例中,具体的,根据所述系统运行状态,确定在当前的信息采集周期下的信息采集间隔,包括:
45.当确定所述内存使用率≤第一设置值时,将所述信息采集频率确定为第一间隔;当确定所述第一设置值<内存使用率≤第二设置值时,将所述信息采集频率确定为第二间隔;当确定所述第二设置值<内存使用率≤第三设置值时,将所述信息采集频率确定为第三间隔;当确定所述第三设置值<内存使用率≤第四设置值时,将所述信息采集频率确定为第四间隔;当确定所述内存使用率>第四设置值时,放弃当前堆栈信息的采集,在等待预设周期时间后返回执行检测操作系统中是否运行有至少一个用户业务的操作。
46.其中,所述各设置值之间的数值关系为:第一设置值<第二设置值<第三设置值<第四设置值;所述各间隔之间的时间长度关系为:第一间隔<第二间隔<第三间隔<第四间隔。
47.在本实施例中,所述各设置值与各间隔的时间长度可以通过用户的设置操作获得,可以设置为符合上述大小关系的任意值;示例性的,在上述步骤的基础上,上述操作可以为:
48.当确定所述内存使用率≤20%时,将所述信息采集频率确定为50ms;
49.当确定所述20%<内存使用率≤40%时,将所述信息采集频率确定为100ms;
50.当确定所述40%<内存使用率≤60%时,将所述信息采集频率确定为200ms;
51.当确定所述60%<内存使用率≤80%时,将所述信息采集频率确定为400ms;
52.当确定所述内存使用率>80%时,放弃当前堆栈信息的采集,在等待预设周期时间后返回执行检测操作系统中是否运行有至少一个用户业务的操作。
53.在本实施例中,采用当确定所述内存使用率>80%时,放弃当前堆栈信息的采集的方法,保证了当用户系统过于忙碌时所述堆栈信息的采集工作不会对当前操作系统的系统性能造成影响,减少了堆栈信息采集对于用户系统性能的损耗。
54.可选的,在上述步骤的基础上,所述系统运行状态还包括:新生代回收行为频率以及老生代回收行为频率。
55.进一步的,当确定所述内存使用率>第四设置值时,放弃当前堆栈信息的采集,在等待预设周期时间后返回执行检测操作系统中是否运行有至少一个用户业务的操作,包括:当确定所述内存使用率>第四设置值、新生代回收行为频率或老生代回收行为频率大于预设阈值时,放弃当前堆栈信息的采集,在等待预设周期时间后返回执行检测操作系统中是否运行有至少一个用户业务的操作。
56.其中,所述新生代回收行为指发生在新生代的垃圾收集动作;所述老生代回收行为指发生在老年代的垃圾收集动作;进一步的,所述新生代与老生代为java虚拟机的堆内存的两部分。
57.示例性的,在上述步骤的基础上,当新生代回收行为5s内超过限定次数或者老生代回收行为在规定周期内超过限定次数,放弃当前堆栈信息的采集,在等待预设周期时间后返回执行检测操作系统中是否运行有至少一个用户业务的操作。
58.可选的,在检测操作系统中是否运行有至少一个用户业务之后,还包括:放弃在当前的堆栈信息采集周期下进行堆栈信息的采集,等待下一堆栈信息采集周期的到来。
59.在本实施例中,若当前操作系统中不存在任何正在运行的用户业务时,为避免多余的信息采集动作对操作系统与系统内存带来的性能损耗,放弃在当前的堆栈信息采集周期下进行堆栈信息的采集,等待下一堆栈信息采集周期的到来。
60.s130、根据所述系统运行状态,确定在当前的信息采集周期下的信息采集间隔,并按照所述信息采集间隔,对所述操作系统中与各用户业务线程对应的堆栈信息进行采集。
61.示例性的,在上述步骤的基础上,若当前系统运行状态检测到内存使用率为50%,则确定所述40%<内存使用率≤60%时,将所述信息采集频率确定为200ms,即每200ms对人工选定的与各用户业务线程对应的堆栈信息进行采集。
62.s140、将采集到的各所述堆栈信息按照用户业务线程进行分组,得到与每个用户业务线程分别对应的堆栈信息集。
63.在本实施例中,将来自同一用户业务线程的至少一条堆栈信息进行绑定,以获取到匹配于每个用户业务线程的每个堆栈信息集;其中,所述堆栈信息集中包括至少一条来自同一用于业务线程的堆栈信息。
64.s150、将各所述堆栈信息集分别绑定至与用户业务线程对应的用户业务中,得到业务信息集。
65.本发明实施例的技术方案,通过检测到操作系统中运行有至少一个用户业务时,获取操作系统当前的系统运行状态以及与每个用户业务分别匹配的至少一个用户业务线程,之后根据系统运行状态,确定在当前的信息采集周期下的信息采集间隔,并按照信息采集间隔,对操作系统中与各用户业务线程对应的堆栈信息进行采集,之后将采集到的各堆栈信息按照用户业务线程进行分组,得到与每个用户业务线程分别对应的堆栈信息集,最后将各堆栈信息集分别绑定至与用户业务线程对应的用户业务中,得到业务信息集,实现了对业务堆栈信息的实时采集,保证了堆栈信息的即时性,减少了堆栈信息采集对于用户系统性能的损耗。
66.实施例二
67.图2为本发明实施例二提供的一种业务堆栈信息的采集方法的流程图,本实施例以上述实施例为基础进行补充,在本实施例中具体是对得到业务信息集之后的步骤以及获
取所述操作系统当前的系统运行状态以及与每个用户业务分别匹配的至少一个用户业务线程之前的步骤进行补充。
68.如图2所示,该方法包括:
69.s210、获取各用户业务所匹配的线程任务列表,并在所述线程任务列表中筛选出与业务请求相关的业务线程并进行提取,作为各用户业务线程。
70.在本实施例中,当检测到操作系统中运行有至少一个用户业务后,用户可以通过系统后台拉取所述用户业务包含的全部线程的线程名称,同时,用户可以通过点触操作对全部线程进行选中或删除,以得到需要进行堆栈数据收集的相关线程作为用户与当前用户业务匹配的用户业务线程。
71.s220、到达预设的堆栈信息采集周期时,检测到操作系统中运行有至少一个用户业务,获取所述操作系统当前的系统运行状态以及与每个用户业务分别匹配的至少一个用户业务线程。
72.s230、根据所述系统运行状态,确定在当前的信息采集周期下的信息采集间隔,并按照所述信息采集间隔,对所述操作系统中与各用户业务线程对应的堆栈信息进行采集。
73.s240、将采集到的各所述堆栈信息按照用户业务线程进行分组,得到与每个用户业务线程分别对应的堆栈信息集。
74.s250、将各所述堆栈信息集分别绑定至与用户业务线程对应的用户业务中,得到业务信息集,并将所述各业务信息集传递至显示设备以进行显示。
75.其中没所述显示设备可以为具有显示功能的显示屏等。
76.在本实施例中,所述各业务信息集在进行显示时可以采用聚合显示的形式,即可以通过选中并点触当前业务信息集的操作打开该业务信息集的目录下所包括的全部堆栈信息集,并通过选中并点触特定的堆栈信息集获取该堆栈信息集中包含的全部堆栈信息。
77.本发明实施例的技术方案,通过获取各用户业务所匹配的线程任务列表,并在所述线程任务列表中筛选出与业务请求相关的业务线程并进行提取,作为各用户业务线程,之后检测到操作系统中运行有至少一个用户业务时,获取操作系统当前的系统运行状态以及与每个用户业务分别匹配的至少一个用户业务线程,之后根据系统运行状态,确定在当前的信息采集周期下的信息采集间隔,并按照信息采集间隔,对操作系统中与各用户业务线程对应的堆栈信息进行采集,之后将采集到的各堆栈信息按照用户业务线程进行分组,得到与每个用户业务线程分别对应的堆栈信息集,最后将各堆栈信息集分别绑定至与用户业务线程对应的用户业务中,得到业务信息集,并将所述各业务信息集传递至显示设备以进行显示,实现了对业务堆栈信息的实时采集,保证了堆栈信息的即时性,减少了堆栈信息采集对于用户系统性能的损耗。
78.实施例三
79.图3为本发明实施例三提供的一种业务堆栈信息的采集装置的结构示意图。
80.如图3所示,该装置包括:
81.业务检测模块310,用于每当到达预设的堆栈信息采集周期时,检测操作系统中是否运行有至少一个用户业务;
82.业务线程获取模块320,用于若是,则获取所述操作系统当前的系统运行状态以及与每个用户业务分别匹配的至少一个用户业务线程;
83.信息采集模块330,用于根据所述系统运行状态,确定在当前的信息采集周期下的信息采集间隔,并按照所述信息采集间隔,对所述操作系统中与各用户业务线程对应的堆栈信息进行采集;
84.信息分组模块340,用于将采集到的各所述堆栈信息按照用户业务线程进行分组,得到与每个用户业务线程分别对应的堆栈信息集;
85.信息绑定模块350,用于将各所述堆栈信息集分别绑定至与用户业务线程对应的用户业务中,得到业务信息集。
86.本发明实施例的技术方案,通过检测到操作系统中运行有至少一个用户业务时,获取操作系统当前的系统运行状态以及与每个用户业务分别匹配的至少一个用户业务线程,之后根据系统运行状态,确定在当前的信息采集周期下的信息采集间隔,并按照信息采集间隔,对操作系统中与各用户业务线程对应的堆栈信息进行采集,之后将采集到的各堆栈信息按照用户业务线程进行分组,得到与每个用户业务线程分别对应的堆栈信息集,最后将各堆栈信息集分别绑定至与用户业务线程对应的用户业务中,得到业务信息集,实现了对业务堆栈信息的实时采集,保证了堆栈信息的即时性,减少了堆栈信息采集对于用户系统性能的损耗。
87.在上述实施例的基础上,信息采集模块330,包括:
88.第一间隔确定单元,用于当确定所述内存使用率≤第一设置值时,将所述信息采集频率确定为第一间隔;
89.第二间隔确定单元,用于当确定所述第一设置值<内存使用率≤第二设置值时,将所述信息采集频率确定为第二间隔;
90.第三间隔确定单元,用于当确定所述第二设置值<内存使用率≤第三设置值时,将所述信息采集频率确定为第三间隔;
91.第四间隔确定单元,用于当确定所述第三设置值<内存使用率≤第四设置值时,将所述信息采集频率确定为第四间隔;
92.第五间隔确定单元,用于当确定所述内存使用率>第四设置值时,放弃当前堆栈信息的采集,在等待预设周期时间后返回执行检测操作系统中是否运行有至少一个用户业务的操作。
93.在上述实施例的基础上,第五间隔确定单元,进一步包括:
94.回收行为检测单元,用于当确定所述内存使用率>第四设置值、新生代回收行为频率或老生代回收行为频率大于预设阈值时,放弃当前堆栈信息的采集,在等待预设周期时间后返回执行检测操作系统中是否运行有至少一个用户业务的操作。
95.在上述实施例的基础上,所述业务堆栈信息的采集装置,还包括:周期循环模块,用于在检测操作系统中是否运行有至少一个用户业务之后,放弃在当前的堆栈信息采集周期下进行堆栈信息的采集,等待下一堆栈信息采集周期的到来。
96.在上述实施例的基础上,所述业务堆栈信息的采集装置,还包括:显示模块,用于将各所述堆栈信息集分别绑定至与用户业务线程对应的用户业务中,得到业务信息集之后,将所述各业务信息集传递至显示设备以进行显示。
97.在上述实施例的基础上,所述业务堆栈信息的采集装置,还包括:业务线程提取模块,用于获取所述操作系统当前的系统运行状态以及与每个用户业务分别匹配的至少一个
用户业务线程之前,获取各用户业务所匹配的线程任务列表;在所述线程任务列表中筛选出与业务请求相关的业务线程并进行提取,作为各用户业务线程。
98.本发明实施例所提供的业务堆栈信息的采集装置可执行本发明任意实施例所提供的业务堆栈信息的采集方法,具备执行方法相应的功能模块和有益效果。
99.实施例四
100.图4示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
101.如图4所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(rom)12、随机访问存储器(ram)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(rom)12中的计算机程序或者从存储单元18加载到随机访问存储器(ram)13中的计算机程序,来执行各种适当的动作和处理。在ram 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、rom 12以及ram 13通过总线14彼此相连。输入/输出(i/o)接口15也连接至总线14。
102.电子设备10中的多个部件连接至i/o接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
103.处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如业务堆栈信息的采集方法。
104.相应的,该方法包括:
105.每当到达预设的堆栈信息采集周期时,检测操作系统中是否运行有至少一个用户业务;
106.若是,则获取所述操作系统当前的系统运行状态以及与每个用户业务分别匹配的至少一个用户业务线程;
107.根据所述系统运行状态,确定在当前的信息采集周期下的信息采集间隔,并按照所述信息采集间隔,对所述操作系统中与各用户业务线程对应的堆栈信息进行采集;
108.将采集到的各所述堆栈信息按照用户业务线程进行分组,得到与每个用户业务线程分别对应的堆栈信息集;
109.将各所述堆栈信息集分别绑定至与用户业务线程对应的用户业务中,得到业务信息集。
110.在一些实施例中,业务堆栈信息的采集方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全
部可以经由rom 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到ram 13并由处理器11执行时,可以执行上文描述的业务堆栈信息的采集方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行业务堆栈信息的采集方法。
111.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
112.用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
113.在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
114.为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
115.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)、区块链网络和互联网。
116.计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过
通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务中,存在的管理难度大,业务扩展性弱的缺陷。
117.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
技术特征:
1.一种业务堆栈信息的采集方法,其特征在于,包括:每当到达预设的堆栈信息采集周期时,检测操作系统中是否运行有至少一个用户业务;若是,则获取所述操作系统当前的系统运行状态以及与每个用户业务分别匹配的至少一个用户业务线程;根据所述系统运行状态,确定在当前的信息采集周期下的信息采集间隔,并按照所述信息采集间隔,对所述操作系统中与各用户业务线程对应的堆栈信息进行采集;将采集到的各所述堆栈信息按照用户业务线程进行分组,得到与每个用户业务线程分别对应的堆栈信息集;将各所述堆栈信息集分别绑定至与用户业务线程对应的用户业务中,得到业务信息集。2.根据权利要求1所述的方法,其特征在于,所述系统运行状态包括:内存使用率;根据所述系统运行状态,确定在当前的信息采集周期下的信息采集间隔,包括:当确定所述内存使用率≤第一设置值时,将所述信息采集频率确定为第一间隔;当确定所述第一设置值<内存使用率≤第二设置值时,将所述信息采集频率确定为第二间隔;当确定所述第二设置值<内存使用率≤第三设置值时,将所述信息采集频率确定为第三间隔;当确定所述第三设置值<内存使用率≤第四设置值时,将所述信息采集频率确定为第四间隔;当确定所述内存使用率>第四设置值时,放弃当前堆栈信息的采集,在等待预设周期时间后返回执行检测操作系统中是否运行有至少一个用户业务的操作。3.根据权利要求2所述的方法,其特征在于:所述各设置值之间的数值关系为:第一设置值<第二设置值<第三设置值<第四设置值;所述各间隔之间的时间长度关系为:第一间隔<第二间隔<第三间隔<第四间隔。4.根据权利要求2所述的方法,其特征在于,所述系统运行状态还包括:新生代回收行为频率以及老生代回收行为频率;当确定所述内存使用率>第四设置值时,放弃当前堆栈信息的采集,在等待预设周期时间后返回执行检测操作系统中是否运行有至少一个用户业务的操作,包括:当确定所述内存使用率>第四设置值、新生代回收行为频率或老生代回收行为频率大于预设阈值时,放弃当前堆栈信息的采集,在等待预设周期时间后返回执行检测操作系统中是否运行有至少一个用户业务的操作。5.根据权利要求1-4任一项所述的方法,其特征在于,在检测操作系统中是否运行有至少一个用户业务之后,还包括:放弃在当前的堆栈信息采集周期下进行堆栈信息的采集,等待下一堆栈信息采集周期的到来。6.根据权利要求1所述的方法,其特征在于,将各所述堆栈信息集分别绑定至与用户业务线程对应的用户业务中,得到业务信息集之后,还包括:
将所述各业务信息集传递至显示设备以进行显示。7.根据权利要求1所述的方法,其特征在于,获取所述操作系统当前的系统运行状态以及与每个用户业务分别匹配的至少一个用户业务线程之前,还包括:获取各用户业务所匹配的线程任务列表;在所述线程任务列表中筛选出与业务请求相关的业务线程并进行提取,作为各用户业务线程。8.一种业务堆栈信息的采集装置,其特征在于,包括:业务检测模块,用于每当到达预设的堆栈信息采集周期时,检测操作系统中是否运行有至少一个用户业务;业务线程获取模块,用于若是,则获取所述操作系统当前的系统运行状态以及与每个用户业务分别匹配的至少一个用户业务线程;信息采集模块,用于根据所述系统运行状态,确定在当前的信息采集周期下的信息采集间隔,并按照所述信息采集间隔,对所述操作系统中与各用户业务线程对应的堆栈信息进行采集;信息分组模块,用于将采集到的各所述堆栈信息按照用户业务线程进行分组,得到与每个用户业务线程分别对应的堆栈信息集;信息绑定模块,用于将各所述堆栈信息集分别绑定至与用户业务线程对应的用户业务中,得到业务信息集。9.一种电子设备,其特征在于,所述电子设备包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的业务堆栈信息的采集方法。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-7中任一项所述的业务堆栈信息的采集方法。
技术总结
本发明公开了一种业务堆栈信息的采集方法、装置、设备及介质。该方法包括:检测操作系统中是否运行有至少一个用户业务;若是,则获取操作系统当前的系统运行状态以及与每个用户业务分别匹配的至少一个用户业务线程;根据系统运行状态,确定信息采集间隔,并按照信息采集间隔,对操作系统中与各用户业务线程对应的堆栈信息进行采集;将采集到的各堆栈信息按照用户业务线程进行分组,得到与每个用户业务线程分别对应的堆栈信息集;将各堆栈信息集分别绑定至与用户业务线程对应的用户业务中,得到业务信息集。通过本发明的技术方案,实现了对业务堆栈信息的实时采集,保证了堆栈信息的即时性,减少了堆栈信息采集对于用户系统性能的损耗。的损耗。的损耗。
技术研发人员:程捷
受保护的技术使用者:北京博睿宏远数据科技股份有限公司
技术研发日:2023.07.21
技术公布日:2023/10/11
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
