通信系统中文件传输协议死锁检测及自恢复的方法与装置的制作方法

文档序号:7722487阅读:219来源:国知局
专利名称:通信系统中文件传输协议死锁检测及自恢复的方法与装置的制作方法
技术领域
本发明涉及通信技术领域中文件传输协议(FTP)技术,特别是指一种通信系统中 FTP死锁检测及自恢复的方法与装置。
背景技术
在移动通信设备中,从基站设备采集的数据包括基站性能数据、每路呼叫详细信 息数据、告警数据及基带抓帧数据等,具有量大、实时、持续等特性。基站通过以太网与操作 维护中心(OMC)相连,采用数据吞吐量大的FTP协议上传数据成为首选。由于复杂的以太 网网络环境及风河vxWorks实时操作系统中FTP底层协议处理不稳定,FTP上传操作突发 性出现关闭(close)、写(write)、读(read)、选择(select)异常死锁或假死现象,其表现 Socket资源(控制连接、数据连接套节字)无法在操作系统允许的操作时间内释放退出本 次系统调度,导致实时操作系统进程调度失控,单板复位,严重影响了基站设备的健壮性, 因此对FTP操作死锁检测及其死锁恢复处理变得十分重要。在进程死锁检测方面,专利《一种信号量死锁的检测方法》[CN200510053781]描述 了通过建立进程和信号量关系对列表,再根据是否存在资源等待环路判断条件检测出是否 发生信号量死锁,从而得到发送死锁的信号量与之对应的进程。其存在的缺点是需要出现 资源等待环路才能判断出死锁,对于FTP上传操作而言,受网络环境因素影响进程突发性 表现为假死状态的情形无法检测。

发明内容
本发明提供一种通信系统中FTP死锁检测及自恢复的方法与装置,用以应对FTP 上传操作中突发性死锁问题。本发明实施例提供的一种通信系统中FTP死锁检测及自恢复的方法包括以下步 骤守护进程通过心跳检测机制确定FTP上传任务发生死锁,则在套接字资源循环队 列中的存储位置记录FTP操作使用的套接字资源,并启动FTP上传任务杀死流程;判断套接字资源循环队列是否已满,如果未满,则将本次死锁占用的套接字信息 压入套接字资源循环队列中,否则,释放套接字资源循环队列中最早的套接字资源,并将本 次死锁占用的套接字信息压入套接字资源循环队列中。守护进程通过心跳检测机制确定FTP上传任务发生死锁,可以包括Al.在初始化完成后,守护进程周期发送心跳检测消息给FTP上传任务,在一定 时间内判断是否收到心跳检测消息的响应消息,如果是,将心跳检测定时器清零,返回步骤 Al;否则,执行步骤A2;A2.将心跳检测计数器加1,判断心跳检测计数器是否大于预设值,如果是,确定 FTP上传任务发生死锁,否则,执行步骤Al。在确定FTP上传任务发生死锁之后,该方法可以进一步包括
守护进程清空心跳计数器,返回步骤Al,在下一周期发起心跳检测。守护进程所属的任务优先级高于FTP上传任务优先级。所述套接字资源包括数据连接套节字,和/或控制连接套节字。本发明实施例提供的一种通信系统中FTP死锁检测及自恢复的装置包括心跳发起检测模块,用于通过心跳检测机制确定FTP上传任务是否发生死锁;缓冲队列管理模块,用于在分配的套接字资源循环队列中的存储位置记录FTP操 作使用的套接字资源,并启动FTP上传任务杀死流程;判断套接字资源循环队列是否已满, 如果未满,则将本次死锁占用的套接字信息压入套接字资源循环队列中,否则,释放套接字 资源循环队列中最早的套接字资源,并将本次死锁占用的套接字信息压入套接字资源循环 队列中。所述心跳发起检测模块可以包括发送模块,用于周期发送心跳检测消息给FTP上传任务;判断模块,用于在一定时间内判断是否收到心跳检测消息的响应消息,如果是,将 心跳检测定时器清零,通知发送模块周期发送心跳检测消息给FTP上传任务;否则,将心跳 检测计数器加1,判断心跳检测计数器是否大于预设值,如果是,确定FTP上传任务发生死 锁,否则,周期发送心跳检测消息给FTP上传任务。所述缓冲队列管理模块,可以进一步用于确定FTP上传任务发生死锁之后,通知 判断模块清空心跳计数器。守护进程所属的任务优先级高于FTP上传任务优先级。所述套接字资源包括数据连接,和/或控制连接套节字。本发明实施例提供的一种FTP死锁检测及其自恢复的系统,包括守护进程单元,用于通过心跳检测机制确定FTP上传任务发生死锁,则在分配的 套接字资源循环队列中的存储位置记录FTP操作使用的套接字资源,并启动FTP上传任务 杀死流程;判断套接字资源循环队列是否已满,如果未满,则将本次死锁占用的套接字信息 压入套接字资源循环队列中,否则,释放套接字资源循环队列中最早的套接字资源,并将本 次死锁占用的套接字信息压入套接字资源循环队列中;FTP上传任务单元,用于守护进程单元的心跳检测返回心跳响应,并从守护进程获 取数据,与FTP建立连接,将获取的数据上传给FTP服务器;套接字资源循环队列模块,用于存储每次死锁时FTP操作使用的套接字资源;FTP服务器,用于接收FTP上传任务上传的数据。本发明实施例通过引入心跳检测机制以检测死锁、发生死锁时的套接字资源循队 列延迟释放套接字资源及自恢复等方法。本实施例的方案应对FTP上传操作中突发性死锁 采取心跳机制检测并自恢复,以减少基站单板异常复位,增强基站设备运行的稳定性及减 少突发状况时对系统CPU冲击的影响。


图1为本发明实施例的FTP死锁检测及自恢复的方法的流程示意图;图2为本发明实施例的FTP上传死锁检测自恢复系统的结构示意图;图3是本发明实施例的心跳检测与自恢复流程示意图4是本发明实施例的FTP上传任务初始化及数据上传流程示意图;
具体实施例方式参见图1所示,本发明实施例的FTP死锁检测及自恢复的方法包括以下步骤步骤101 守护进程通过心跳检测机制确定FTP上传任务发生死锁,则在分配的套 接字(Socket)资源循环队列中的存储位置,记录FTP操作使用的Socket资源,并启动FTP 上传任务杀死流程。这里,在初始化完成后,守护进程通过心跳检测机制确定FTP上传任务发生死锁 可以这样实现Al.守护进程周期发送心跳检测消息给FTP上传任务,在一定时间内判断是否收 到心跳检测消息的响应消息(ACK),如果是,将心跳检测定时器清零,返回步骤Al ;否则,执 行步骤A2 ;A2.将心跳检测计数器加1,判断心跳检测计数器是否大于预设值,如果是,确定 FTP上传任务发生死锁,否则,执行步骤Al。在确定FTP上传任务发生死锁之后,守护进程可以清空心跳计数器,返回步骤Al, 在下一周期发起心跳检测。所述Socket资源可以包括数据连接套节字,和/或控制连接套节字。步骤102 判断Socket资源循环队列是否已满,如果未满,则执行步骤103,,否则, 执行步骤104。步骤103 将本次死锁占用的Socket信息压入Socket资源循环队列中,结束。步骤104 释放Socket资源循环队列中最早的Socket资源,并将本次死锁占用的 Socket信息压入Socket资源循环队列中。在确定FTP上传任务发生死锁之后,守护进程可以清空心跳计数器,以便在下一 周期发起心跳检测。守护进程所属的任务优先级高于FTP上传任务优先级。参见图2所示,本发明实施例中FTP上传自检测与自恢复装置包括守护进程单元 21、FTP上传任务单元22、Socket资源循环队列模块23以及FTP服务器对。守护进程单元21包含收集数据消息接口,心跳发起检测功能,死锁判决恢复功 能,FTP Socket资源管理功能。FTP上传任务单元22,其中包含与FTP服务器建立控制连 接与数据连接并上传数据FTP基本操作,心跳响应功能。Socket资源循环队列模块23,用 于存储每次突发性死锁时使用的FTP控制连接、数据连接套节字资源。FTP服务器M,用于 接收FTP上传数据。FTP上传任务单元,包括心跳ACK模块、Socket资源恢复时读取操作时保存模块、 FTP上传;心跳ACK根据心跳发起及检测发起的心跳检测消息直接反馈,如果此时FTP上传 正在执行过程中,则心跳ACK无法得到调度而无法反馈心跳检测消息;Socket资源读写每 次初始化时根据Socket资源循环缓存管理模块读取的历史最早的FTP死锁Socket资源相 关套节字信息采取延迟释放,FTP上传模块读取数据接收消息接口保存的数据,并与FTP服 务器建立连接,同时保存Socket资源相关套节字信息写入到Socket资源循环缓存管理模 块指派的队列节点中。详细的说,守护进程单元21,用于通过心跳检测机制确定FTP上传任务发生死锁,则在分配的Socket资源循环队列中的存储位置记录FTP操作使用的Socket资源,并启动 FTP上传任务杀死流程;判断Socket资源循环队列是否已满,如果未满,则将本次死锁占 用的Socket信息压入Socket资源循环队列中,否则,释放Socket资源循环队列中最早的 Socket资源,并将本次死锁占用的Socket信息压入Socket资源循环队列中。FTP上传任务单元22,用于守护进程单元的心跳检测返回心跳响应,并从守护进 程获取数据,与FTP建立连接,将获取的数据上传给FTP服务器。Socket资源循环队列模块23,用于存储每次死锁时FTP操作使用的Socket资源。FTP服务器对,用于接收FTP上传任务上传的数据。守护进程单元21,对应与本发明实施例的FTP死锁检测及其自恢复的装置,包括 心跳发起检测模块和缓冲队列管理模块。心跳发起检测模块,用于通过心跳检测机制确定FTP上传任务是否发生死锁;缓冲队列管理模块,用于在分配的Socket资源循环队列中的存储位置记录FTP操 作使用的Socket资源,并启动FTP上传任务杀死流程;判断Socket资源循环队列是否已 满,如果未满,则将本次死锁占用的Socket信息压入Socket资源循环队列中,否则,释放 Socket资源循环队列中最早的Socket资源,并将本次死锁占用的Socket信息压入Socket 资源循环队列中。所述心跳发起检测模块包括发送模块和判断模块。发送模块,用于周期发送心 跳检测消息给FTP上传任务;判断模块,用于在一定时间内判断是否收到心跳检测消息的 ACK,如果是,将心跳检测定时器清零,通知发送模块周期发送心跳检测消息给FTP上传任 务;否则,将心跳检测计数器加1,判断心跳检测计数器是否大于预设值,如果是,确定FTP 上传任务发生死锁,否则,周期发送心跳检测消息给FTP上传任务。所述缓冲队列管理模块212,可以进一步用于确定FTP上传任务发生死锁之后,通 知判断模块清空心跳计数器。守护进程所属的任务优先级高于FTP上传任务优先级。参见图3所示,本发明实施例的心跳检测与自恢复的具体过程如下步骤301 守护进程单元初始化时启动心跳检测定时器。步骤302 守护进程单元周期发起心跳检测消息到FTP上传任务。步骤303:守护进程单元判断是否收到上次心跳检测消息的ACK,如果收到,则执 行步骤308,如果没有收到上次ACK消息,则执行步骤304 步骤304 将心跳失败计数器加1。步骤305 守护进程单元对心跳计数器的累加值进行判断,判断是否超过预设值 N,如果不大于,则返回301,以等待下一个周期发起心跳检测;如果大于预设值N,则执行步 骤 306。步骤306 启动FTP上传任务杀死流程。步骤307 守护进程单元从Socket资源循环队列中分配新的存取位置,重新初始 化FTP上传任务,并清空心跳失败计数器,返回到301,以等待下一个周期发起心跳检测,结
束ο步骤308 心跳计时器清零,再返回到301等待下一个周期发起心跳检测。如图4所示,本发明的FTP上传任务初始化及数据上传流程如下
步骤401 守护进程在初始化或死锁发生恢复时触发FTP上传任务初始化流程 401。步骤402 =FTP上传任务判断Socket资源循环队列是否已满402,如果否,执行步 骤404,否则,执行步骤403。步骤403 释放历史最早Socket套节字资源,用于保存本次生命周期的套节字信 肩、ο步骤404 从Socket资源循环队列中获取空闲Socket资源节点的位置用于保存 本次生命周期的套节字信息,FTP上传任务初始化工作完成。步骤405 检测是否有数据需要上传405,如果没有等待上传数据收集完成,如果 有,执行步骤406,否则,执行步骤407。步骤406 与FTP服务器建立连接,同时将本次FTP操作的Socket套节字信息压 入Socket资源循环队列。步骤407 启动数据上报操作,上传完成后进入步骤405,完成本次数据FTP上传。 其中整个FTP上传任务生命周期中一直受到守护进程的心跳消息检测监控。本实施例的方案与现有技术相比较,引入了心跳机制检测死锁、死锁Socket资源 循队列延迟释放Socket资源及自恢复等方法。并且心跳守护机制检测死锁可据不同的判 别死锁策略(如修改N值)对其进行监控,而非出现信号量等待环路作为唯一判别,提高 了基站设备应对突发性FTP死锁处理的灵活性,减少异常时单板复位,提高系统稳定性;延 后释放死锁时的控制连接、数据连接socket资源,减少了突发异常的可能性,基站系统中 socket资源总体占用数得到保证,避免socket资源使用溢出;同时不会因为FTP操作异常 时而导致守护进程数据接收调度异常,减少守护进程所在任务的所有进程消息积压风险, 对单板CPU利用率冲高有缓解作用。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精 神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围 之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种文件传输协议FTP死锁检测及自恢复的方法,其特征在于,该方法包括以下步骤守护进程通过心跳检测机制确定FTP上传任务发生死锁,则在套接字资源循环队列中 的存储位置记录FTP操作使用的套接字资源,并启动FTP上传任务杀死流程;判断套接字资源循环队列是否已满,如果未满,则将本次死锁占用的套接字信息压入 套接字资源循环队列中,否则,释放套接字资源循环队列中最早的套接字资源,并将本次死 锁占用的套接字信息压入套接字资源循环队列中。
2.根据权利要求1所述的方法,其特征在于,守护进程通过心跳检测机制确定FTP上传 任务发生死锁,包括Al.守护进程周期发送心跳检测消息给FTP上传任务,在一定时间内判断是否收到心 跳检测消息的响应消息,如果是,将心跳检测定时器清零,返回步骤Al ;否则,执行步骤A2 ;A2.将心跳检测计数器加1,判断心跳检测计数器是否大于预设值,如果是,确定FTP上 传任务发生死锁,否则,执行步骤Al。
3.根据权利要求2所述的方法,其特征在于,在确定FTP上传任务发生死锁之后,该方 法进一步包括守护进程清空心跳计数器,返回步骤Al,在下一周期发起心跳检测。
4.根据权利要求1所述的方法,其特征在于,守护进程所属的任务优先级高于FTP上传 任务优先级。
5.根据权利要求1所述的方法,其特征在于,所述套接字资源包括数据连接套节字,和 /或控制连接套节字。
6.一种文件传输协议FTP死锁检测及自恢复的装置,其特征在于,包括心跳发起检测模块,用于通过心跳检测机制确定FTP上传任务是否发生死锁;缓冲队列管理模块,用于在分配的套接字资源循环队列中的存储位置记录FTP操作使 用的套接字资源,并启动FTP上传任务杀死流程;判断套接字资源循环队列是否已满,如果 未满,则将本次死锁占用的套接字信息压入套接字资源循环队列中,否则,释放套接字资源 循环队列中最早的套接字资源,并将本次死锁占用的套接字信息压入套接字资源循环队列 中。
7.根据权利要求6所述的装置,其特征在于,所述心跳发起检测模块包括发送模块,用于周期发送心跳检测消息给FTP上传任务;判断模块,用于在一定时间内判断是否收到心跳检测消息的响应消息,如果是,将心跳 检测定时器清零,通知发送模块周期发送心跳检测消息给FTP上传任务;否则,将心跳检测 计数器加1,判断心跳检测计数器是否大于预设值,如果是,确定FTP上传任务发生死锁,否 则,周期发送心跳检测消息给FTP上传任务。
8.根据权利要求7所述的装置,其特征在于,所述缓冲队列管理模块,进一步用于确定 FTP上传任务发生死锁之后,通知判断模块清空心跳计数器。
9.根据权利要求6所述的装置,其特征在于,所述套接字资源包括数据连接套节字,和 /或控制连接套节字。
10.一种FTP死锁检测及自恢复的系统,其特征在于,包括守护进程单元,用于通过心跳检测机制确定FTP上传任务发生死锁,则在分配的套接字资源循环队列中的存储位置记录FTP操作使用的套接字资源,并启动FTP上传任务杀死 流程;判断套接字资源循环队列是否已满,如果未满,则将本次死锁占用的套接字信息压入 套接字资源循环队列中,否则,释放套接字资源循环队列中最早的套接字资源,并将本次死 锁占用的套接字信息压入套接字资源循环队列中;FTP上传任务单元,用于守护进程单元的心跳检测返回心跳响应,并从守护进程获取数 据,与FTP建立连接,将获取的数据上传给FTP服务器;套接字资源循环队列模块,用于存储每次死锁时FTP操作使用的套接字资源; FTP服务器,用于接收FTP上传任务上传的数据。
全文摘要
本发明公开了一种文件传输协议(FTP)死锁检测及自恢复的方法及装置,以应对FTP上传操作中突发性死锁问题。该方法为守护进程通过心跳检测机制确定FTP上传任务发生死锁,则在套接字资源循环队列中的存储位置记录FTP操作使用的套接字资源,并启动FTP上传任务杀死流程;判断套接字资源循环队列是否已满,如果未满,则将本次死锁占用的套接字信息压入套接字资源循环队列中,否则,释放套接字资源循环队列中最早的套接字资源,并将本次死锁占用的套接字信息压入套接字资源循环队列中。
文档编号H04L29/08GK102088470SQ20091025430
公开日2011年6月8日 申请日期2009年12月7日 优先权日2009年12月7日
发明者刘苏建, 朱平, 谢星峰, 陈华 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1