技术领域 本发明涉及网络通讯领域,尤其涉及语音业务交换设备中的防吊死存活 性测试方法。 背景技术 在现代通讯系统中,语音业务交换设备必须支持大量用户的并发语音业 务。比如,在一个移动交换中心(以下简称为MSC)内,每个用户的语音 业务的信令控制和数据交换是由实现不同功能的实体通过相互协作完成。本 发明将这些功能实体称为进程,对于进程所处理的每个语音业务,称为实例。 进程分别为每个使用的实例分配、申请、释放相应的软硬件资源,如内存(数 据区)、中继资源、语音编解码资源、定时器资源等。目前,语音业务交换 设备集成度越来越高,支持的并发用户数量越来越大,导致交换设备中资源 的申请、占用、释放非常频繁。如果进程存在某些未被发现的错误,可能会 导致资源吊死的现象。这些吊死的资源如果不及时回收,一定时间后会逐渐 导致交换设备的资源枯竭,无法为后续的用户继续提供语音业务。 目前通常使用的防吊死存活性测试方法是,各进程对每个使用的进程实 例,分别设置一个防吊死存活性检测定时器,在定时器超时后,该进程向关 联进程发送存活性测试请求消息,触发关联进程的存活性检测过程。如果关 联进程检查通过,则关联进程回送存活性测试响应消息。这种存活性测试方 法为每个使用的进程实例都设置定时器,导致定时器资源占用过多。如在一 个支持10万用户语音业务的MSC中,按照忙时每用户0.05爱尔兰,平均 通话时长60秒计算,同时存在的实例数会达到5000个。如果每个进程都 需要5000个防吊死存活性测试定时器,则需要的总的定时器数目将非常巨 大。一个MSC要维护这么多的定时器,不仅负荷太大,而且有很多缺陷。 不仅如此,由于未使用循环定时器,一旦定时器消息异常丢失,将导致资源 吊死。 发明内容 本发明的目的是克服现有技术存在的定时器资源占用过多、定时器消息 容易异常丢失、资源容易吊死的缺点,以期提供一种能够保证语音业务交换 设备稳定性和可靠性、降低资源占用率、防止资源长时间吊死的在关联进程 间进行防吊死存活性测试的方法。 本发明提出的语音业务交换设备的防吊死存活性测试方法,其特征在 于,包括以下步骤: a)对于进程实例数N,确定防吊死存活性测试扫描周期T; b)根据上述扫描周期T,设置定时器Ta,并确定该定时器的时长t和每 次扫描的实例数m,符合公式m=N/T*t,T和N是一个事先确定的 常量; c)在每次定时器事件到达时,触发防吊死存活性测试请求; d)对于每个防吊死存活性测试请求,根据事前约定的方式,接收方进程 返回防吊死存活性测试响应; e)对于响应超时的情况,根据事前约定的方式,发起方进程进行相应的 处理。 通过本发明所述的语音业务交换设备的防吊死存活性测试方法,不仅能 够保证语音业务交换设备稳定性和可靠性、节省了大量的定时器资源,还能 够防止资源长时间吊死实现资源的及时检测和回收。 附图说明 图1是语音业务交换设备在上电时执行的动作流程图。 图2是进程中防吊死存活性测试工作流程图。 具体实施方式 下面结合附图对本发明所述方法进行进一步说明: 在图1所示的语音业务交换设备上电流程图中,描述了语音业务交换设备 上电时进程应该执行的初始化动作。这些工作是:将指示当前进行防吊死存活 性测试的变量curID初始化为O,设置周期性定时器Ta,之后迁入工作态。 图2是进程在工作态收到Ta定时器事件和防吊死存活性测试响应消息 时应该执行的工作流程图。在收到Ta定时器时间后,进程应该执行防吊死 存活性测试过程,该过程执行具体的测试请求。在该过程返回之后,进程应 该继续执行响应超时消息处理过程。 下面对本发明所述各个步骤进行具体的说明。 本发明的实现步骤如下: 1、确定合理的防吊死存活性测试扫描周期T。以背景技术中所述的话 务量模型为例,每个语音业务实例的平均通话时长为60秒左右,也就是说, 大部分语音业务实例所占用的各种呼叫相关资源在60秒之后就应该释放。 另外存在少量语音业务实例,通话时长会大于60秒。因此,防吊死存活性 测试扫描周期T小于60秒没有实际意义,但如果防吊死存活性测试扫描周 期T过长,则无法及时发现资源吊死的现象,资源回收的效率低下,也无法 体现防吊死存活性测试机制的优势。为此,设置一个2~4分钟的扫描周期是 比较合理的。例如,T=120秒。 2、确定定时器Ta时长t和每次扫描的实例数m。通常,在一个语音业 务交换设备中每个进程能提供的总的实例数目N是可以预先固定下来的。 依然以前述话务量模型为例,对于一个支持10万用户的MSC局,总的实 例数目N等于5000。根据公式可知,在N和T确定下来之后,t和m成正 比关系,也就是说,如果t越大,则每次扫描时需要进行防吊死存活性测试 的实例数目就越多。假设t为1秒,则m=5000/120*1≈41.6,因为 m必须是一个正整数,将上述结果取整,得m=42。在程序中,可以将定时 器时长t设置为在一定范围内可变的自变量,m作为因变量。 3、发起防吊死存活性测试。其具体方法是,首先设置一个变量curID,指 向当前应该进行防吊死存活性测试的实例。该变量初始化为O。对每个进程实 例,设置是否发起了防吊死激活测试的标志位isTestingFg,初始化为FALSE。 在每次Ta定时器事件到达时,对m个进程实例依次进行防吊死存活性测试扫 描,以决定是否发起防吊死存活性测试。例如,假设curID为n,则依次对n, n+1,...,n+m-1等进程实例进行扫描。对于防吊死存活性测试的发起条件,可由 各进程自行设定。如果发起防吊死存活性测试的条件满足,则本进程向接收方 进程发送存活性测试消息。假设进程A为发起方进程,进程B为接收方进程, 防吊死存活性测试消息携带参数包括:本进程的进程号PidA,本进程实例号 IdA,接收方进程进程号PidB,接收方进程实例号IdB。此外,该消息还可以 包括具它相关信息,如需要接收方进程检测的资源列表。在消息发送之后,设 置本进程实例中的防吊死激活测试标志位为TRUE。 4、防吊死存活性测试请求消息处理。接收方进程在收到防吊死存活性测试 请求消息后,根据消息内容对相关进程实例使用的资源进行检查,得出检查结 果,并在一定的时间范围内,发送防吊死存活性测试响应消息给发起方进程。 防吊死存活性测试响应方式有三种:方式(1):无论检查结果是正确或错误, 都发送响应;方式(2):只对正确的结果发送响应,而对错误的结果不发送响 应,由发起方对超时的进程实例进行吊死资源的释放处理;方式(3):只对错 误的结果发送响应,而对正确的结果不发送响应。方式(1)的优点是可以及时 处理吊死的资源,但缺点是进程间消息量最多。方式(2)尽管可以减少一定进 程间的消息量,但减少的并不多,因为通常情况下,资源吊死的现象是很少的。 而且这种方式下,吊死资源的释放必须等到响应消息超时才可能发现并处理。 方式(3)的优点是可以大量减少进程间的消息,如果有资源吊死的现象,在收 到响应消息后就可以及时采取动作,响应速度与方式(1)是相同的。其缺点是 万一响应消息丢失,必须等到下一个扫描周期才能测试,所以有较大风险。基 于以上分析,方式(1)和方式(3)两种响应方式各有优缺点,适合于不同场 合使用。 5、防吊死存活性测试响应消息的处理。对于步骤4所述的方式(1),进 程A在收到防吊死存活性测试响应消息后,需要判断消息内容是成功响应还是 失败响应。如果收到的是成功响应,则将进程实例中的防吊死激活测试标志位 置位。如果收到的是失败响应,则进程将该实例使用的相关资源释放,以供后 续的业务使用。对于方式(3),进程A将对应进程实例的相关资源释放。 6、防吊死存活性测试响应超时消息处理。为了节省定时器的数目,本发明 使用定时器Ta的时长t来确定响应超时消息的时长。仍以步骤2所示假设为例, t=1秒,假设收到四次Ta定时器超时事件,则响应超时消息的时长为4秒。 假设进程A在某一个时刻P向进程B发送了防吊死存活性测试请求消息,则在 4个Ta定时器事件之后,需要对P时刻的那些进程实例进行响应超时检查。假 设在当前时刻,curID为n,则对于n-4*m,n-4*m+1,…,n-(4-1)*m-1等实例应 该进行响应超时检查。响应超时消息的处理如下:对于步骤4中的方式(1), 如果这些实例中的防吊死激活测试标志位为TRUE,说明这些进程实例在规定 事件内没有收到响应消息,则这些进程实例的相关资源被释放。对于方式(3), 如果防吊死激活测试标志位为TRUE,则置其为FALSE。