System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请属于进程线程监控,尤其涉及一种多线程的监测系统、方法及存储介质。
技术介绍
1、adaptive autosar健康管理模块,以下简称phm,支持的功能为保活监测,截止时间监测,逻辑时序监测。其中保活监测是由被监测进程周期性的向phm上报保活消息来实现,针对一个进程内有多个子线程的场景,如何对进程内的所有子线程进行保活监测,传统的方案为:每个进程中的所有子线程周期性地向phm同时上报点。那么,以子线程为单位向phm上报保活消息,假设几百个线程以10ms~50ms的周期向phm同时上报点,通信数据量非常大,通信缓存区也比较大,占用的内存和cpu占用较大。另外,phm的保活消息处理吞吐率很大,phm会成为性能瓶颈。容易出现丢帧和cpu占用较大问题。并且,因为应用开发工程师需要在每个子线程中开发代码,进行保活消息的上报。如果子线程几百个级别,项目开发效率将会非常低。
技术实现思路
1、针对上述现有技术的缺陷,本申请提供了一种多线程的监测系统、方法及存储介质,通过在每个进程中设立一个主监控线程,由主监控线程负责收集和上报子线程的保活信息,从而减少了大量子线程直接向phm上报保活消息的通信负载,减少了通信负载和资源占用,提高了系统的性能和开发效率,同时确保了监测的准确性。
2、为实现上述目的,本申请提供了一种多线程的监测系统,所述系统包括:
3、任意程序运行中的进程,在任一进程中包含多个子线程和一个主监控线程,所述主监控线程指在每一所述进程中选取的任一所述子线程
4、线程调度器,与各个主监控线程的一端双向连接,用于根据所述子线程的运行时间判定子线程的当前状态信息,并将所述子线程的当前状态信息传输至所述主监控线程。
5、以及,健康监测管理模块,与所述各个主监控线程的一端连接,用于检测来自主监控线程的心跳信息,根据心跳信息的检测结果决定触发保活异常处理。
6、在本申请中,任一所述主监控线程中包括计时器模块;所述计时器模块用于向所述线程调度器按预设周期一查询所述子线程的运行时间。
7、进一步地,所述当前状态信息至少包括运行状态和休眠状态;当所述子线程的运行时间在预设时间段内未变化,则所述子线程当前处于休眠状态;否则,所述子线程当前处于运行状态。
8、在本申请中,在所述将所述子线程的当前状态信息传输至所述主监控线程之后,还包括:
9、仅当所有被监控的子线程当前处于运行状态时,通过所述计时器模块向所述健康监测管理模块按预设周期二上报所述心跳信息;否则,不上报;其中,所述预设周期二大于所述预设周期一。
10、在本申请中,当所述心跳信息的检测结果是所述健康监测管理模块未检测到所述心跳信息时,判定其隶属的主监控线程所在的进程为运行异常,触发所述保活异常处理;否则,判定其隶属的主监控线程所在的进程为运行正常。
11、进一步地,所述保活异常处理,具体为:
12、对运行异常的进程进行预设次数重启操作;若经过所述预设次数重启后,所述进程仍为运行异常,则对所述进程进行功能降级处理或重启所述多线程的监测系统。
13、为实现上述目的,本申请还提供了一种多线程的监测方法,包括任意程序运行中的进程,在任一所述进程中包含多个子线程;还包括:
14、s100:在每一所述进程中选取任一所述子线程作为其所在进程的主监控线程。
15、s200:收集任意所在进程中处于监控状态的子线程的的标识符;所述子线程的标识符至少包括子线程的运行时间。
16、s300:通过所述子线程的运行时间判定子线程的当前状态信息。
17、s400:通过所述定子线程的当前状态信息判定输出心跳信息后,根据心跳信息的检测结果决定触发保活异常处理。
18、在本申请中,所述步骤s300,具体为:
19、根据预设周期一查询所述子线程的运行时间;仅当所有被监控的子线程当前处于运行状态时,根据预设周期二上报所述心跳信息;否则,不上报;其中,所述预设周期二大于所述预设周期一。
20、在本申请中,所述步骤s400,具体为:
21、当所述心跳信息的检测结果是未检测到所述心跳信息时,判定其隶属的主监控线程所在的进程为运行异常,触发所述保活异常处理;否则,判定其隶属的主监控线程所在的进程为运行正常。
22、进一步地,所述保活异常处理具体为:
23、对运行异常的进程进行预设次数重启操作;若经过所述预设次数重启后,所述进程仍为运行异常,则对所述进程进行功能降级处理或重启所述多线程的监测系统。
24、为实现上述目的,本申请还提供了一种存储介质,为计算机可读存储介质中的一种,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上任一所述的多线程的监测方法。
25、与现有技术相比,本申请有益效果在于:
26、本申请提出的一种多线程的监测系统、方法及存储介质,通过在每个进程中设立一个主监控线程,由主监控线程负责收集和上报子线程的保活信息,从而减少了大量子线程直接向phm上报保活消息的通信负载,主监控线程可以更有效地管理和调度子线程的上报周期,避免多个子线程同时上报造成的通信拥塞,提高通信效率。本申请还减少了每个子线程都需要上报保活消息的需求,从而降低了通信缓存区的占用,减少了内存和cpu的占用。本申请通过主监控线程收集子线程的状态信息,可以确保保活监测的准确性,同时减少了因为子线程过多而上报丢失的可能性,提高了系统的性能和开发效率,同时确保了监测的准确性。
本文档来自技高网...【技术保护点】
1.一种多线程的监测系统,其特征在于,包括:
2.根据权利要求1所述的一种多线程的监测系统,其特征在于,
3.根据权利要求2所述的一种多线程的监测系统,其特征在于,
4.根据权利要求3所述的一种多线程的监测系统,其特征在于,在所述将所述子线程的当前状态信息传输至所述主监控线程之后,还包括:
5.根据权利要求4所述的一种多线程的监测系统,其特征在于,
6.根据权利要求5所述的一种多线程的监测系统,其特征在于,所述保活异常处理,具体为:
7.一种多线程的监测方法,其特征在于,包括任意程序运行中的进程,在任一所述进程中包含多个子线程;还包括:
8.根据权利要求7所述的一种多线程的监测方法,其特征在于,所述步骤S300,具体为:根据预设周期一查询所述子线程的运行时间;
9.根据权利要求8所述的一种多线程的监测方法,其特征在于,所述步骤S400,具体为:当所述心跳信息的检测结果是未检测到所述心跳信息时,判定其隶属的主监控线程所在的进程为运行异常,触发所述保活异常处理;否则,判定其隶属的主监控线程
10.一种存储介质,为计算机可读存储介质中的一种,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如权利要求7~9任一所述的多线程的监测方法。
...【技术特征摘要】
1.一种多线程的监测系统,其特征在于,包括:
2.根据权利要求1所述的一种多线程的监测系统,其特征在于,
3.根据权利要求2所述的一种多线程的监测系统,其特征在于,
4.根据权利要求3所述的一种多线程的监测系统,其特征在于,在所述将所述子线程的当前状态信息传输至所述主监控线程之后,还包括:
5.根据权利要求4所述的一种多线程的监测系统,其特征在于,
6.根据权利要求5所述的一种多线程的监测系统,其特征在于,所述保活异常处理,具体为:
7.一种多线程的监测方法,其特征在于,包括任意程序运行中的进程,在任一所述进程中包含多...
【专利技术属性】
技术研发人员:王碧,
申请(专利权)人:惠州市德赛西威智能交通技术研究院有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。