[发明专利]线程状态监控方法、装置、计算机设备和存储介质有效
申请号: | 201811257367.6 | 申请日: | 2018-10-26 |
公开(公告)号: | CN109542719B | 公开(公告)日: | 2022-05-13 |
发明(设计)人: | 贺召军 | 申请(专利权)人: | 金蝶软件(中国)有限公司 |
主分类号: | G06F11/30 | 分类号: | G06F11/30 |
代理公司: | 华进联合专利商标代理有限公司 44224 | 代理人: | 何平 |
地址: | 518000 广东省深圳市南山区*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 线程 状态 监控 方法 装置 计算机 设备 存储 介质 | ||
本发明涉及一种线程状态监控方法、装置、计算机设备和存储介质。该线程状态监控方法包括:获取应用运行过程中产生的线程堆栈;根据所述线程堆栈中的每个线程,从预设的全局线程状态表中获取每个线程对应的方法状态栈,所述方法状态栈包括所述线程上各个方法的方法状态信息;根据每个方法状态栈中的方法状态信息确定每个线程上的方法状态;其中,所述方法状态包括方法运行卡顿、方法运行流畅。利用该方法,可以查看应用的每个线程上具体执行的每个方法的方法状态信息,从而可以根据该状态信息,准确地得到哪个线程上的哪个方法出现了问题,进而对该出现问题的方法的性能进行优化。
技术领域
本发明涉及计算机技术领域,特别是涉及一种线程状态监控方法、装置、计算机设备和存储介质。
背景技术
计算机在运行应用程序的过程中,当应用程序出现长时间卡顿时,就需要对其运行状态进行分析。一般都是分析该应用程序运行时产生的线程堆栈,然后在线程堆栈中找到具体是哪个线程上的方法(方法也可以称为功能)出现问题,从而对该线程的方法进行优化,使得应用程序运行正常。
传统技术中,在应用程序运行过程中,一般都是先登录并运行Java所在的应用服务器,之后运行jvm(Java虚拟机)的jstack(堆栈跟踪工具)命令,得到该应用程序的线程堆栈,然后对该应用程序的线程堆栈信息进行分析,并定位出具体是哪个线程出现问题,从而对该线程的所有方法进行优化,使应用程序运行正常。
但是上述方法无法定位出具体是线程的哪个方法出现了问题,从而无法准确优化线程上的方法。
发明内容
基于此,有必要针对上述传统技术无法定位出具体是线程的哪个方法出现了问题,从而无法准确优化线程上的方法问题,提供一种线程状态监控方法、装置、计算机设备和存储介质。
一种线程状态监控方法,包括:
获取应用运行过程中产生的线程堆栈;
根据所述线程堆栈中的每个线程,从预设的全局线程状态表中获取每个线程对应的方法状态栈,所述方法状态栈包括所述线程上各个方法的方法状态信息;
根据每个方法状态栈中的方法状态信息确定每个线程上的方法状态;其中,所述方法状态包括方法运行卡顿、方法运行流畅。
在其中一个实施例中,所述方法状态信息包括所述方法的标识、所述方法的开始运行时间。
在其中一个实施例中,所述方法状态信息还包括所述方法的非时间参数信息,所述非时间参数信息包括所执行的数据库脚本、所述方法对应的请求地址参数中的至少一个。
在其中一个实施例中,所述根据每个方法状态栈中的方法状态信息确定每个线程上的方法状态,包括:
获取当前系统运行时间;
根据所述当前系统运行时间和每个方法状态栈中各个方法的开始运行时间,确定每个线程上各个方法的持续运行时长;
根据每个线程上各个方法的持续运行时长和预设的时长的比较结果,确定每个线程上各个方法的方法状态。
在其中一个实施例中,所述获取应用运行过程中产生的线程堆栈之前,还包括:
获取应用运行的当前线程的标识;
根据所述当前线程的标识判断当前的全局线程状态表中是否存在所述当前线程标识对应的方法状态栈;
若否,则根据所述当前线程上的各个方法,在当前的全局线程状态表中创建所述当前线程对应的方法状态栈。
在其中一个实施例中,所述根据所述当前线程上的各个方法,在当前的全局线程状态表中创建所述当前线程对应的方法状态栈,包括:
在当前的全局线程状态表中按照预设规则创建一个空栈;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于金蝶软件(中国)有限公司,未经金蝶软件(中国)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811257367.6/2.html,转载请声明来源钻瓜专利网。