System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机应用,特别涉及一种死锁检测方法及存储介质。
技术介绍
1、随着信息技术的快速发展,ip-pbx设备在通信领域的应用日益广泛。在ip-pbx设备在处理大量通话时,死锁问题成为了影响设备性能的重要因素。死锁,是指两个或两个以上的进程或线程在执行过程中,由于相互等待对方释放资源而无法继续执行,从而导致系统资源的阻塞现象。在ip-pbx设备中,死锁可能导致通话无法建立、通话中断或者设备响应缓慢等问题。
2、目前,传统ippbx在解决死锁问题上存在诸多不足。首先,缺乏实时监测机制,无法及时处理死锁问题,问题累积导致通信系统稳定性受到影响。其次,现有死锁检测方法在处理大规模、高并发的通话时,通话质量会发生下降、系统吞吐量减小,可用性受到影响。
3、因此,针对上述问题,亟需一种死锁检测与处理方法,有效解决ip-pbx设备在处理大量通话时可能出现的死锁问题,提高通信系统的稳定性和可用性。
技术实现思路
1、为了实现上述目的,本申请提供了一种死锁检测方法及存储介质,能够有效解决ip-pbx设备在处理大量通话时可能出现的死锁问题,提高通信系统的稳定性和可用性。
2、第一方面,本申请提供了一种死锁检测方法,所述方法包括:
3、s1、配置处理器的任务处理器模块和线程池模块;
4、s2、基于所述任务处理器模块,在所述线程池模块中创通话应用对应的通话线程池对象;
5、s3、响应于通话呼入,基于所述任务处理器将所述通话请求调
6、s4、在执行所述通话任务的过程中,每隔预设周期获取处理器的状态信息,所述状态信息至少包括待执行任务数量;
7、s5、当任一处理器的待执行任务数量超过预设异常数量,且,处理器超过预设时长没有释放线程,则判断所述处理器发生死锁。
8、在一种可能实施方式中,所述步骤s1包括:
9、s11、在所述处理器的任务处理器模块中,配置默认任务处理者default_tps和默认任务处理者监听对象default_tps_listener;
10、s12、在所述处理器的线程池模块中配置线程池任务处理者threadpool_tps、线程池任务处理者监听对象threadpool_tps_listener、串行器任务处理者serializer_tps和串行器任务处理者监听对象serializer_tps_listener;
11、其中,所述默认任务处理者监听对象、线程池任务处理者监听对象和串行器任务处理者监听对象均包含:创建start方法和任务推进task_pushed方法;所述创建方法用于创建任务,所述任务推进方法用于发送任务处理信号。
12、在一种可能实施方式中,所述通话应用是ippbx通话应用,所述步骤s2包括:
13、s21、基于所述任务处理器模块和所述线程池模块,创建ippbx通话应用对应的通话线程池对象,所述通话线程池对象中包括:通话线程池任务处理者、通话线程监听对象、通话任务处理者、通话任务处理者监听对象、通话串行器任务处理者和通话串行器监听对象;
14、s22、在创建所述通话任务处理者监听对象后,调用所述通话任务处理者监听对象的start方法,创建通话任务线程default_tps_thread;
15、所述通话线程池对象中的各个成员之间用关键标识进行关联,所述关键标识指示所述ippbx通话应用。
16、在一种可能实施方式中,所述步骤s3包括:
17、s31、响应于通话呼入,将所述通话请求放入所述通话应用对应的通话串行器任务处理者serializer_tps;
18、s32、响应于通话串行器任务处理者serializer_tps新增所述通话请求,调用通话串行器监听对象serializer_tps_listener的任务推进方法,以向通话线程池任务处理者threadpool_tps中添加待执行任务execute_tasks;
19、s33、响应于通话线程池任务处理者threadpool_tps中新增所述待执行任务,调用通话线程监听对象threadpool_tps_listener的任务推进方法,以向通话任务处理者default_tps中添加队列推进任务queued_task_pushed;
20、s34、响应于所述通话任务处理者default_tps中新增队列推进任务,调用通话任务处理者监听对象default_tps_listener的任务推进方法,以在通话线程池对象中执行通话任务处理者default_tps上所创建的通话任务。
21、在一种可能实施方式中,所述步骤s34包括:
22、响应于所述通话任务处理者default_tps中新增队列推进任务,调用通话任务处理者监听对象default_tps_listener的任务推进方法,以向通话任务线程default_tps_thread释放任务推进信号;
23、响应于所述通话任务线程default_tps_thread接收到任务推进信号,在所述通话任务线程default_tps_thread中执行通话默认任务default_tps。
24、在一种可能实施方式中,在所述通话任务线程default_tps_thread中执行通话任务default_tps后,所述方法还包括:
25、触发执行所述通话线程监听对象threadpool_tps_listener向所述通话任务处理者添加的queued_task_pushed,以触发所述queued_task_pushed创建自增线程池;
26、基于所述自增线程池,执行execute_tasks后,执行所述串行器任务执行者serializer_tps中所述通话请求对应的串行器任务。
27、在一种可能实施方式中,所述默认任务处理者default_tps、所述线程池任务处理者threadpool_tps和所述串行器任务处理者serializer_tps分别采用各自的队列计数字段来指示待执行任务数量;
28、所述默认任务处理者default_tps、所述线程池任务处理者threadpool_tps和所述串行器任务处理者serializer_tps在新增一个任务的情况下,队列计数字段数值+1,在执行完一个任务的情况下,队列计数字段数值-1。
29、在一种可能实施方式中,所述步骤s4包括:
30、在执行所述通话任务的过程中,基于预设的门狗程序,每隔预设周期根据所述通话任务所在的处理器标识,查询处理器标识对应处理器的状态信息,所述状态信息还包括:处理器标识processor、已执行任务数量processed,待执行任务数量in queue、等待执行达到过的最大数量max depth;
31、所述步骤s4的处理器状态查询过本文档来自技高网...
【技术保护点】
1.一种死锁检测方法,其特征在于,所述方法包括:
2.根据权利要求1所述的死锁检测方法,其特征在于,所述步骤S1包括:
3.根据权利要求2所述的死锁检测方法,其特征在于,所述通话应用是IPPBX通话应用,所述步骤S2包括:
4.根据权利要求2所述的死锁检测方法,其特征在于,所述步骤S3包括:
5.根据权利要求4所述的死锁检测方法,其特征在于,所述步骤S34包括:
6.根据权利要求5所述的死锁检测方法,其特征在于,在所述通话任务线程default_tps_thread中执行通话任务default_tps后,所述方法还包括:
7.根据权利要求2-6任一所述的死锁检测方法,其特征在于,所述默认任务处理者default_tps、所述线程池任务处理者threadpool_tps和所述串行器任务处理者serializer_tps分别采用各自的队列计数字段来指示待执行任务数量;
8.根据权利要求1所述的死锁检测方法,其特征在于,所述步骤S4包括:
9.根据权利要求1所述的死锁检测方法,其特征在于,所
10.一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现权利要求1至9任一所述的死锁检测方法。
...【技术特征摘要】
1.一种死锁检测方法,其特征在于,所述方法包括:
2.根据权利要求1所述的死锁检测方法,其特征在于,所述步骤s1包括:
3.根据权利要求2所述的死锁检测方法,其特征在于,所述通话应用是ippbx通话应用,所述步骤s2包括:
4.根据权利要求2所述的死锁检测方法,其特征在于,所述步骤s3包括:
5.根据权利要求4所述的死锁检测方法,其特征在于,所述步骤s34包括:
6.根据权利要求5所述的死锁检测方法,其特征在于,在所述通话任务线程default_tps_thread中执行通话任务default_tps后,所述方法还...
【专利技术属性】
技术研发人员:汪俊锋,林水跃,
申请(专利权)人:厦门星纵数字科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。