一种协程监控方法及装置制造方法及图纸

技术编号:15220703 阅读:62 留言:0更新日期:2017-04-26 21:37
本发明专利技术涉及通信技术领域,公开了一种协程监控方法及装置,用于解决因协程异常而导致系统延迟的技术问题。该方法包括:在第一进程中,通过监控线程对所述第一进程中的至少一个协程进行监控,以确定所述至少一个协程中是否有协程的运行时长超过预设运行时长;其中,所述至少一个协程中的每个协程均预先记录有各自的预设运行时长;若确定所述至少一个协程中的第一协程的运行时长超过为所述第一协程设定的第一预设运行时长,则通过所述监控线程终止运行所述第一协程。

Method and apparatus for CO monitoring

The invention relates to the technical field of communication, and discloses a method and a device for monitoring a cooperative process. The method comprises the following steps: in the first process, through the monitoring thread to monitor at least a coroutine, the first in the process, to determine the at least one coroutine whether the coroutine runs long run time exceeds a preset length; among them, each coroutine said at least one coroutine the pre recorded run their preset length; if it is determined that the first coroutine at least a coroutine in the long run than the set for the first coroutine first preset operation, through the monitoring operation of the first thread to terminate the coroutine.

【技术实现步骤摘要】

本专利技术涉及通信
,尤其涉及一种协程监控方法及装置。
技术介绍
OpenStack(一种开源的云计算管理平台项目)是一个自由软件和开放源代码云计算管理平台项目,OpenStack通过各种互补的服务提供了IaaS(InfrastructureasaService,基础设施即服务)的解决方案,是一个旨在为公共云及私有云的建设与管理提供软件的开源项目。Thread(线程)是linux(一种操作系统)操作系统调度的单位,系统中的多个线程可以通过一些调度策略(比如优先级抢占、时间片轮转等等)来获得CPU(中央处理器)并运行,当CPU拥有多个核的时候,这些线程可以同时执行。Coroutine(协程)可以认为是用户空间线程,OS(操作系统)对其存在一无所知,需要开发人员在线程中设计好调度,用来执行协作式多任务非常合适。操作系统调度到协程所承载的线程后,线程内部再完成对协程的二级调度。在使用协程时,如果使用公共资源的协程不是同属于同一个线程,那么需要通过加入互斥锁的机制来保护数据的一致性。那么就存在一个问题:如果使用公共资源的一个协程出现异常,那么接下来需要使用该公共资源的协程就会一直请求不到用于对数据进行操作的锁,这样其他协程就会一直处于等待状态,从而导致系统出现延迟。
技术实现思路
本专利技术提供一种协程监控方法及装置,用于解决因协程异常而导致系统延迟的技术问题。第一方面,提供一种协程监控方法,包括:在第一进程中,通过监控线程对所述第一进程中的至少一个协程进行监控,以确定所述至少一个协程中是否有协程的运行时长超过预设运行时长;其中,所述至少一个协程中的每个协程均预先记录有各自的预设运行时长;若确定所述至少一个协程中的第一协程的运行时长超过为所述第一协程设定的第一预设运行时长,则通过所述监控线程终止运行所述第一协程。可选的,在通过监控线程对所述第一进程中的至少一个协程进行监控之前,还包括:在运行所述至少一个协程时,通过所述至少一个协程分别记录各自运行的起始时刻,以及分别记录为各自设定的预设运行时长。可选的,在终止运行所述第一协程之后,还包括:对所述第一协程进行初始化。可选的,在对所述第一协程进行初始化之后,还包括:重新运行所述第一协程。可选的,在通过监控线程对所述第一进程中的至少一个协程进行监控之后,还包括:若所述至少一个协程中的第二协程在运行完毕时的运行时长未超过为所述第二协程设定的第二预设运行时长,则通过所述第二协程注销记录的所述第二协程运行的起始时刻以及所述第二预设运行时长。第二方面,提供一种协程监控装置,包括:监控模块,用于在第一进程中,通过监控线程对所述第一进程中的至少一个协程进行监控,以确定所述至少一个协程中是否有协程的运行时长超过预设运行时长;其中,所述至少一个协程中的每个协程均预先记录有各自的预设运行时长;终止模块,用于若确定所述至少一个协程中的第一协程的运行时长超过为所述第一协程设定的第一预设运行时长,则通过所述监控线程终止运行所述第一协程。可选的,所述装置还包括记录模块,用于:在所述监控模块通过监控线程对所述第一进程中的至少一个协程进行监控之前,在运行所述至少一个协程时,通过所述至少一个协程分别记录各自运行的起始时刻,以及分别记录为各自设定的预设运行时长。可选的,所述装置还包括初始化模块,用于:在所述终止模块终止运行所述第一协程之后,对所述第一协程进行初始化。可选的,所述装置还包括操作模块,用于:在所述初始化模块对所述第一协程进行初始化之后,重新运行所述第一协程。可选的,所述装置还包括注销模块,用于:在所述监控模块通过监控线程对所述第一进程中的至少一个协程进行监控之后,若所述至少一个协程中的第二协程在运行完毕时的运行时长未超过为所述第二协程设定的第二预设运行时长,则通过所述第二协程注销记录的所述第二协程运行的起始时刻以及所述第二预设运行时长。上述技术方案中的一个或两个,至少具有如下技术效果:在一个进程中,可以运行监控线程,通过监控线程对需要监控的协程(即至少一个协程)进行监控,而需要监控的线程也预先分别记录有各自的预设运行时长,那么若监控线程监控到有运行时长超过相应的预设运行时长的协程,则监控线程可以终止运行该协程,这样可以让其他协程继续运行,避免因一个协程出现异常而导致其他协程都无法正常运行的情况出现,也尽量避免了系统延迟的情况,提高网络质量。附图说明图1为协程、线程及进程的层次关系示意图;图2为本专利技术实施例中协程监控方法的流程图;图3为本专利技术实施例中一种应用场景示意图;图4为本专利技术实施例中协程监控装置的结构框图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。请参见图1,为process(进程)、线程和协程的层次关系,进程是资源的一个组织和分配单位,进程中所有的执行流程使用同样的进程空间。线程是系统的一个调度单位,进程下的各线程在操作系统的调度下使用共同的进程空间协同工作,在多核的CPU环境下,可以同时多个线程同时运行。协程是某个线程下的二级调度,操作系统看不到这一层,同一个线程下的协程是串行执行的,因此他们之间可以不用考虑对公共资源的互斥保护。考虑一种场景:OpenStack中的Nova-compute服务(一个负责完成虚拟机操作指令的进程,驻留在计算节点上),为了能够及时地响应用户对虚拟机的操作指令,采用了多线程、及线程下面多协程这样的3级管理机制(可参见图1)。一些物理资源的使用信息都是多个线程共用的,也就存在以下问题:Nova-compute服务会周期性地获取本地的物理资源信息上报到OpenStack的数据库中,如果是不同线程下的协程需要使用这些物理资源,那么需要对资源操作的流程加互斥锁,保证在一个时刻只有一个线程能够访问资源。当消息服务器异常等原因导致资源上报等流程阻塞后,所有需要对该资源进行操作的协程因为等不到用于进行数据操作的锁,则都无法执行,只能都处于等待状态。而这个时候服务状态可能在表面看上去还是正常的,因此需要系统及时发现并自愈。本专利技术实施例充分考虑到以上问题,在一个进程中,可以运行监控线程,通过监控线程对需要监控的协程(即至少一个协程)进行监控,而需要监控的线程也预先分别记录有各自的预设运行时长,那么若监控线程监控到有运行时长超过相应的预设运行时长的协程,则监控线程可以终止运行该协程,这样可以让其他协程继续运行,避免因一个协程出现异常而导致其他协程都无法正常运行的情况出现,也尽量避免了系统延迟的情况,提高网络质量。下面结合附图介绍本专利技术的优选实施例。请参见图2,本专利技术实施例提供一种协程监控方法,该方法的流程描述如下。步骤201:在第一进程中,通过监控线程对第一进程中的至少一个协程进行监控,以确定至少一个协程中是否有协程的运行时长超过预设运行时长;其中,至少一个协程中的每个协程均预先记录有各自的预设运行时长;步骤202:若确定至少一个协程中的第一协程的运行时长超过为本文档来自技高网...

【技术保护点】
一种协程监控方法,其特征在于,包括:在第一进程中,通过监控线程对所述第一进程中的至少一个协程进行监控,以确定所述至少一个协程中是否有协程的运行时长超过预设运行时长;其中,所述至少一个协程中的每个协程均预先记录有各自的预设运行时长;若确定所述至少一个协程中的第一协程的运行时长超过为所述第一协程设定的第一预设运行时长,则通过所述监控线程终止运行所述第一协程。

【技术特征摘要】
1.一种协程监控方法,其特征在于,包括:在第一进程中,通过监控线程对所述第一进程中的至少一个协程进行监控,以确定所述至少一个协程中是否有协程的运行时长超过预设运行时长;其中,所述至少一个协程中的每个协程均预先记录有各自的预设运行时长;若确定所述至少一个协程中的第一协程的运行时长超过为所述第一协程设定的第一预设运行时长,则通过所述监控线程终止运行所述第一协程。2.如权利要求1所述的方法,其特征在于,在通过监控线程对所述第一进程中的至少一个协程进行监控之前,还包括:在运行所述至少一个协程时,通过所述至少一个协程分别记录各自运行的起始时刻,以及分别记录为各自设定的预设运行时长。3.如权利要求1或2所述的方法,其特征在于,在终止运行所述第一协程之后,还包括:对所述第一协程进行初始化。4.如权利要求3所述的方法,其特征在于,在对所述第一协程进行初始化之后,还包括:重新运行所述第一协程。5.如权利要求4所述的方法,其特征在于,在通过监控线程对所述第一进程中的至少一个协程进行监控之后,还包括:若所述至少一个协程中的第二协程在运行完毕时的运行时长未超过为所述第二协程设定的第二预设运行时长,则通过所述第二协程注销记录的所述第二协程运行的起始时刻以及所述第二预设运行时长。6.一种协程监控装置,其特征在于,包括:监控模块,用于在第一进程中,通过监控线程对所述第一...

【专利技术属性】
技术研发人员:尹德升
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1