基于Linux容器控制Web应用资源的方法和装置制造方法及图纸

技术编号:17441932 阅读:33 留言:0更新日期:2018-03-10 14:36
本发明专利技术公开了一种基于Linux容器控制Web应用资源的方法和装置,涉及云计算领域。其中的方法包括:创建应用资源控制组;设置Web应用ID与应用资源控制组ID的映射关系;设置Web应用ID、用户线程ID与内核线程ID的映射关系;根据Web应用ID调用应用资源控制组的接口,并将内核线程ID写入对应的应用资源控制组的任务控制列表中;在调度内核线程时,根据内核线程ID执行应用资源控制组的资源控制策略,从而实现以线程为粒度对每个Web应用资源配额的精细控制。

【技术实现步骤摘要】
基于Linux容器控制Web应用资源的方法和装置
本专利技术涉及云计算领域,尤其涉及一种基于Linux容器控制Web应用资源的方法和装置。
技术介绍
轻量级Web应用基于Web应用引擎托管运行,Web应用引擎提供了应用运行所需的公共类库和运行时环境,在一个Web应用引擎上可以同时托管运行大量的轻量级Web应用,由于应用引擎上的所有应用都共享相同的主机资源,个别应用出现异常(如死循环)就可能耗尽整个主机的资源,因此需要对Web应用的资源配额进行控制。如图1所示,Web应用引擎通常采用语言级的沙箱技术(如自定义类加载器、接口安全策略等)控制应用资源,为应用提供专用的线程和I/O接口,导致Web应用与应用引擎紧密绑定,影响了应用的可移植性,而且应用引擎运行在操作系统用户态,无法控制内核态资源(如内核线程、CPU物理核等)。另外,目前主流的Linux容器技术(如LXC、Docker等)主要以进程为粒度进行资源的控制,如图2所示,可以使用容器技术将Web应用和应用引擎整体打包,以进程容器的形式隔离运行,然而应用引擎通常需占用上百兆内存,这增加了轻量级Web应用部署和运行的开销。
技术实现思路
本专利技术要解决的一个技术问题是提供一种能够以线程为粒度精细控制轻量级Web应用资源配额的方案。根据本专利技术一方面,提出一种基于Linux容器控制Web应用资源的方法,包括:创建应用资源控制组;设置Web应用ID与应用资源控制组ID的映射关系;设置Web应用ID、用户线程ID与内核线程ID的映射关系;根据Web应用ID调用应用资源控制组的接口,并将内核线程ID写入对应的应用资源控制组的任务控制列表中;在调度内核线程时,根据内核线程ID执行应用资源控制组的资源控制策略。进一步地,创建应用资源控制组包括:根据Web应用的类型和优先级创建应用资源控制组。进一步地,设置Web应用ID、用户线程ID与内核线程ID的映射关系包括:在线程库内设置用户线程ID与内核线程ID的映射关系;Web应用ID对应的应用引擎调用底层语言或操作系统线程库的接口获取用户线程ID对应的内核线程ID,从而建立Web应用ID与用户线程ID的映射关系以及Web应用ID与内核线程ID的映射关系。进一步地,根据内核线程ID执行应用资源控制组的资源控制策略包括:根据内核线程ID获取对应的应用资源控制组;根据应用资源控制组配置的资源控制内核线程。进一步地,根据应用资源控制组配置的资源控制内核线程包括:根据应用资源控制组配置的CPU、内存和I/O控制每个内核线程能够使用的CPU时间片、堆栈大小、Swap大小和/或I/O速率的上限。进一步地,该方法还包括:应用资源控制组中对应的Web应用拥有相同的资源优先级。根据本专利技术的另一方面,还提出一种基于Linux容器控制Web应用资源的装置,包括:控制组创建模块,用于创建应用资源控制组;应用部署管理模块,用于设置Web应用ID与应用资源控制组ID的映射关系;线程管理器模块,用于设置Web应用ID、用户线程ID与内核线程ID的映射关系;应用资源管理模块,用于根据Web应用ID调用应用资源控制组的接口,并将内核线程ID写入对应的应用资源控制组的任务控制列表中,以便在调度内核线程时,根据内核线程ID执行应用资源控制组的资源控制策略。进一步地,控制组创建模块用于根据Web应用的类型和优先级创建应用资源控制组。进一步地,线程管理器模块用于从线程库获取用户线程ID与内核线程ID的映射关系,并保存Web应用ID与用户线程ID的映射关系以及Web应用ID与内核ID的映射关系。进一步地,应用资源管理模块用于根据内核线程ID获取对应的应用资源控制组,根据应用资源控制组配置的资源控制内核线程。进一步地,应用资源管理模块用于根据应用资源控制组配置的CPU、内存和I/O控制每个内核线程能够使用的CPU时间片、堆栈大小、Swap大小和/或I/O速率的上限。进一步地,应用资源控制组中对应的Web应用拥有相同的资源优先级。与现有技术相比,本专利技术通过创建应用资源控制组,设置Web应用ID与应用资源控制组ID的映射关系以及Web应用ID、用户线程ID与内核线程ID的映射关系,根据Web应用ID调用应用资源控制组的接口,并将内核线程ID写入对应的应用资源控制组的任务控制列表中,在调度内核线程时,根据内核线程ID执行应用资源控制组的资源控制策略,从而实现以线程为粒度对每个Web应用资源配额的精细控制。通过以下参照附图对本专利技术的示例性实施例的详细描述,本专利技术的其它特征及其优点将会变得清楚。附图说明构成说明书的一部分的附图描述了本专利技术的实施例,并且连同说明书一起用于解释本专利技术的原理。参照附图,根据下面的详细描述,可以更加清楚地理解本专利技术,其中:图1为现有基于应用沙箱的语言级应用资源控制方法的示意图。图2为现有基于容器的进程级应用资源控制方法的示意图。图3为本专利技术基于Linux容器控制Web应用资源的方法的一个实施例的流程示意图。图4为本专利技术基于Linux容器控制Web应用资源的方法的另一个实施例的流程示意图。图5为本专利技术基于Linux容器控制Web应用资源的装置的一个实施例的结构示意图。图6为本专利技术基于Linux容器控制Web应用资源的一个具体应用实施例的示意图。具体实施方式现在将参照附图来详细描述本专利技术的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本专利技术的范围。同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本专利技术及其应用或使用的任何限制。对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。为使本专利技术的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本专利技术进一步详细说明。图3为本专利技术基于Linux容器控制Web应用资源的方法的一个实施例的流程示意图。该方法包括以下步骤:在步骤310,创建应用资源控制组。即定义若干个线程级资源控制组。例如,根据应用的性能模型或优先级定义n组应用资源控制组,为每个应用资源控制组创建一个CGroup(ControlGroup,控制组),并配置每个CGroup的CPU、内存和I/O资源上限。在步骤320,设置Web应用ID与应用资源控制组ID的映射关系。在部署应用时,即将Web应用部署到应用引擎上时,绑定应用ID与应用资源控制组ID。在步骤330,设置Web应用ID、用户线程ID与内核线程ID的映射关系。例如,Web应用ID对应的应用引擎调用线程库(如posix)的接口创建用户线程,线程库将用户线程绑定到内核线程。应用引擎再次调用线程库接口可以获取用户线程ID与内核线程ID的映射关系,从而建立Web应用ID与用户线程ID的对应本文档来自技高网...
基于Linux容器控制Web应用资源的方法和装置

【技术保护点】
一种基于Linux容器控制Web应用资源的方法,其特征在于,包括:创建应用资源控制组;设置Web应用ID与应用资源控制组ID的映射关系;设置所述Web应用ID、用户线程ID与内核线程ID的映射关系;根据所述Web应用ID调用应用资源控制组的接口,并将所述内核线程ID写入对应的所述应用资源控制组的任务控制列表中;在调度内核线程时,根据所述内核线程ID执行所述应用资源控制组的资源控制策略。

【技术特征摘要】
1.一种基于Linux容器控制Web应用资源的方法,其特征在于,包括:创建应用资源控制组;设置Web应用ID与应用资源控制组ID的映射关系;设置所述Web应用ID、用户线程ID与内核线程ID的映射关系;根据所述Web应用ID调用应用资源控制组的接口,并将所述内核线程ID写入对应的所述应用资源控制组的任务控制列表中;在调度内核线程时,根据所述内核线程ID执行所述应用资源控制组的资源控制策略。2.根据权利要求1所述的方法,其特征在于,所述创建应用资源控制组包括:根据所述Web应用的类型和优先级创建所述应用资源控制组。3.根据权利要求1所述的方法,其特征在于,所述设置所述Web应用ID、用户线程ID与内核线程ID的映射关系包括:在线程库内设置所述用户线程ID与所述内核线程ID的映射关系;所述Web应用ID对应的应用引擎调用所述线程库的接口获取所述用户线程ID对应的内核线程ID,从而建立所述Web应用ID与所述用户线程ID的映射关系以及所述Web应用ID与所述内核线程ID的映射关系。4.根据权利要求1-3任一所述的方法,其特征在于,所述根据所述内核线程ID执行所述应用资源控制组的资源控制策略包括:根据所述内核线程ID获取对应的所述应用资源控制组;根据所述应用资源控制组配置的资源控制所述内核线程。5.根据权利要求4所述的方法,其特征在于,所述根据所述应用资源控制组配置的资源控制所述内核线程包括:根据所述应用资源控制组配置的CPU、内存和I/O控制每个所述内核线程能够使用的CPU时间片、堆栈大小、Swap大小和/或I/O速率的上限。6.根据权利要求1-3任一所述的方法,其特征...

【专利技术属性】
技术研发人员:何震苇杨新章陆钢严丽云梁柏青
申请(专利权)人:中国电信股份有限公司
类型:发明
国别省市:北京,11

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

1