[发明专利]用于进程中检测死锁的方法和设备有效
申请号: | 201710166450.1 | 申请日: | 2017-03-20 |
公开(公告)号: | CN107391265B | 公开(公告)日: | 2020-12-04 |
发明(设计)人: | 刘俊峰;姚文辉;朱家稷 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F9/52 | 分类号: | G06F9/52 |
代理公司: | 上海百一领御专利代理事务所(普通合伙) 31243 | 代理人: | 陈贞健;王路丰 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 进程 检测 死锁 方法 设备 | ||
本申请的目的是提供一种用于进程中检测死锁的方法和设备,通过基于若干执行线程所获取的锁生成对应所述节点,基于所述锁的种类及所述锁之间的获取顺序建立所述锁对应所述节点之间的有向边,针对不同的锁采取不同的建边方式避免了误判,基于所述节点及所述节点之间的有向边生成逻辑图;当所述执行线程有状态为异常时,获取所述执行线程对应的逻辑图,大大减少了拷贝逻辑图的次数,从而降低了拷贝逻辑图时与正常服务的线程存在的竞争的影响,并判断所述逻辑图是否为有向无环图,若是则确定无死锁情况,否则确定有死锁情况。更加准确的判断死锁情况和缩短检测死锁的时间。
技术领域
本申请涉及计算机领域,尤其涉及一种用于进程中检测死锁的技术。
背景技术
随着技术的发展和用户的需求,分布式系统逐渐变的更加复杂化,而且在复杂后还需要修改来实现新的功能,为了提高系统的性能,采用了多线程的方式,因此导致在复杂的逻辑中进行修改后,容易出现死锁的问题。在死锁出现后,调查起来会比较容易,但是有很多场景在平时测试时并不能出现死锁,往往到了线上才出现死锁,就会影响集群的正常服务,导致线上故障。在某些分布式系统中,可以通过paxos来容忍失效转移(FailOver)的节点,可以通过将出现死锁的进程进行重启来规避线上运行过程中遇到死锁而影响服务的问题。
在Linux中已经有了检查是否出现死锁的机制:在启动后会创建一个线程来监测所有的线程,如果有哪个线程处于不可中断的睡眠状态(D状态)超过120s,那么认为线程被夯住(hang)了,会根据配置进行操作,默认情况下只输出日志(log)并不会做其它的事情。而这种检测死锁的方法检查周期长,如果真的出现死锁,也需要经过120s才能判断出现死锁;而且容易误报,如果有线程因为操作而需要超过120s的D状态,那么会被判定为死锁。
为了避免进程(线程)死锁对整个系统造成的重大危害,提高系统的稳定性,需要有一个有效的方法进行死锁的检测,以便及时发现进程(线程)死锁。
发明内容
本申请的目的是提供一种用于进程中检测死锁的方法与设备,以解决如何快速、准确检测进程中检测死锁的问题。
根据本申请的一个方面,提供了一种用于进程中检测死锁的方法,包括:
基于若干执行线程所获取的锁生成对应所述节点,基于所述锁的种类及所述锁之间的获取顺序建立所述锁对应所述节点之间的有向边,基于所述节点及所述节点之间的有向边生成逻辑图;
当所述执行线程有状态为异常时,获取所述执行线程对应的逻辑图;
判断所述逻辑图是否为有向无环图,若否,则确定有死锁情况。
进一步地,基于所述锁的种类及所述锁之间的获取顺序确定对应所述节点之间的有向边包括:
若所述锁为读锁,则判断是否有其他所述执行线程在等待写锁;若是,则建立前一所述锁对应所述节点到所述写锁对应所述节点的有向边;若否,则判断所述执行线程是否已获得所述读锁,若是则无需建立所述有向边,否则建立前一所述锁对应所述节点到所述读锁对应所述节点的有向边。
根据本申请的另一方面,还提供了一种用于进程中检测死锁的设备,包括:
生成装置,用于基于若干执行线程所获取的锁生成对应所述节点,基于所述锁的种类及所述锁之间的获取顺序建立所述锁对应所述节点之间的有向边,基于所述节点及所述节点之间的有向边生成逻辑图;
确定装置,用于当所述执行线程有状态为异常时,获取所述逻辑图;
判断装置,用于判断所述逻辑图是否为有向无环图,若否,则确定有死锁情况。
进一步地,所述生成装置还包括:第三建边单元,用于若所述锁为可重入锁,则判断所述执行线程是否已获得所述可重入锁,若是则无需建立所述有向边,否则建立前一所述锁对应所述节点到所述可重入锁对应所述节点的有向边。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710166450.1/2.html,转载请声明来源钻瓜专利网。