死锁检测方法及存储介质与流程
- 国知局
- 2024-08-02 12:38:01
本技术涉及计算机应用,特别涉及一种死锁检测方法及存储介质。
背景技术:
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的处理器状态查询过程支持被包装为外部方法a供所述看门狗程序调用。
32、在一种可能实施方式中,所述步骤s5包括:
33、基于预设的看门狗程序,当所述待执行任务数量达到预设异常数量时,采用所述通话请求对应的处理器标识,向对应的处理器添加释放任务,所述释放任务为:等待所述处理器对应的资源锁释放;
34、基于所述看门狗程序在处理器外部持有条件锁,所述条件锁用于等待所述资源锁成功释放;当超过所述预设时长所述条件锁未释放,则判断所述处理器发生死锁;
35、所述步骤s5的死锁判断过程被包装为外部方法b供所述看门狗程序调用。
36、第二方面,提供一种芯片,该芯片包括处理器和接口电路,接口电路用于接收指令并传输至处理器,处理器执行指令以实现如第一方面提供的死锁检测方法。
37、第三方面,提供一种计算机可读存储介质,该存储介质中存储有至少一段程序,至少一段程序由处理器执行以实现如第一方面提供的死锁检测方法。
38、第四方面,提供一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现如第一方面提供的死锁检测方法。
39、本技术提供的技术方案至少包括如下技术效果:
40、(1)可扩展性:本技术技术方案具有良好的可扩展性,可适应不断增长的通信需求以及通信功能,面对大规模、高并发的通话场景也可良好适应。
41、(2)性能影响小:在已有的模块上进行改造,减少引入复杂度,可以确保通信服务的高效运行,而不会因死锁检测而导致通话质量下降。
42、(3)无需特定硬件支持:本技术技术方案使用软件方式去实现,无需另外的特定外设硬件支持,降低部署的复杂性和成本。
43、(4)提高死锁问题的处理效率:支持进一步在内部部署监控服务器,通过实时监测上报至后台服务器,从而在第一时间得知应用环境出现死锁问题,从而及时自动恢复客户通话现场,不影响后续客户的使用场景。对应的维护人员则在获取有效文件后进行分析来解决此次的死锁问题。
44、综上,本技术基于ippbx应用的任务处理器模块和线程池模块进行线程逻辑的功能扩展,严密的条件锁检测逻辑可提升死锁监测的实时性和准确性,提升通话质量并保证通话系统可用性。
本文地址:https://www.jishuxx.com/zhuanli/20240802/237084.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表