一种优化服务器内存资源利用率的方法及系统与流程

文档序号:12463675阅读:228来源:国知局
一种优化服务器内存资源利用率的方法及系统与流程

本发明涉及计算机技术领域,特别涉及计算机数据处理和性能调优技术领域,具体为一种优化服务器内存资源利用率的方法及系统。



背景技术:

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。目前很多的应用程序都采用Java语言进修编写,例如日志分析系统使用了Java。Java最诱人的特性之一是不需要显式地管理对象的生命周期,当对象不再被使用时,会由JVM(Java Virtual Machine,Java虚拟机)在后台自动进行回收,这种回收称为“垃圾回收”。简单来说,垃圾回收由两步构成:查找不再使用的对象,以及释放这些对象所管理的内存。垃圾收集器回收对象或者在内存中移动对象时,对象的内存地址会发生变化,所以必须确保应用程序线程不再继续使用这些对象。为了确保在回收过程中,任何应用程序都不再访问该对象,所有的应用线程会在垃圾回收过程中被停止运行,这被称为时空停顿(stop-the-world)。通常这些停顿对应用的性能影响很大。并且JVM堆内存设置越大,会导致在垃圾回收过程中应用程序停顿时间越长。比如在测试环境中,配置JVM堆内存为10GB,就会出现十几秒的卡顿(图1),配置更多的JVM堆内存会导致更长时间的卡顿,这对于实时日志分析是不可忍受的性能问题。另一方面,我单机服务器内存有64GB甚至128GB,剩下的内存就不能很好的利用了。

现有的一些厂商通过基于物理机上的虚拟机集群的方式来解决性能问题,但是虚拟化对于硬件性能损耗比较高,资源较为浪费。



技术实现要素:

鉴于以上所述现有技术的缺点,本发明的目的在于提供一种优化服务器内存资源利用率的方法及系统,用于解决现有技术无法有效优化服务器内存资源利用率和应用程序性能的问题。

为实现上述目的及其他相关目的,本发明在一方面提供一种优化服务器内存资源利用率的方法,应用于装设Linux系统的服务器中,所述优化服务器内存资源利用率的方法包括以下步骤:于服务器上配置Docker引擎;于所述服务器上安装基于所述Docker引擎获取的所述服务器上应用程序的Docker镜像;利用安装的所述应用程序的Docker镜像启动多个用于控制所述应用程序运行的Docker容器,形成基于Docker容器的应用程序集群;配置各所述Docker容器的堆内存的大小;根据所述服务器的主机内存的大小实时动态调整所述Docker容器集群中Docker容器的数量。

于本发明的一实施例中,所述应用程序为实时日志分析应用程序。

于本发明的一实施例中,通过配置所述应用程序的Docker镜像中的应用程序启动多个用于控制所述应用程序运行的Docker容器,形成基于Docker容器的应用程序集群。

于本发明的一实施例中,所述Docker容器的堆内存的大小范围为1GB~15GB。

本发明另一方面还提供一种优化服务器内存资源利用率的系统,应用于装设Linux系统的服务器中,所述优化服务器内存资源利用率的系统包括:Docker引擎配置模块,用于服务器上配置Docker引擎;Docker镜像安装模块,用于于所述服务器上安装基于所述Docker引擎获取的所述服务器上应用程序的Docker镜像;Docker容器集群模块,用于利用安装的所述应用程序的Docker镜像启动多个用于控制所述应用程序运行的Docker容器,形成基于Docker容器的应用程序集群;堆内存配置模块,用于配置各所述Docker容器的堆内存的大小;Docker容器数量调整模块,用于根据所述服务器的主机内存的大小实时动态调整所述Docker容器集群中Docker容器的数量。

于本发明的一实施例中,所述应用程序为实时日志分析应用程序。

于本发明的一实施例中,所述Docker容器集群模块通过配置所述应用程序的Docker镜像中的应用程序启动多个用于控制所述应用程序运行的Docker容器,形成基于Docker容器的应用程序集群。

于本发明的一实施例中,所述Docker容器的堆内存的大小范围为1GB~15GB。

本发明另一方面还提供一种服务器,所述服务器中装设Linux系统,所述服务器上包含有如上所述的优化服务器内存资源利用率的系统。

如上所述,本发明的优化服务器内存资源利用率的方法及系统,具有以下有益效果:

1、本发明通过多Docker容器组成的集群控制应用程序(例如实时日志分析应用程序)运行,有效提升了服务器主机内存的利用率,解决了服务器内存资源浪费的问题。

2、本发明降低了JVM垃圾回收过程中的卡顿,卡顿由原来的十几秒,到改良后业务层面感受不到卡顿,解决了由于JVM堆内存配置过大,导致时空停顿时间过长的问题,有效提升了应用程序的性能。

附图说明

图1显示为本发明的优化服务器内存资源利用率的方法及系统中采用的Docker容器的架构图。

图2显示为现有技术中虚拟机的架构图。

图3显示为本发明的优化服务器内存资源利用率的方法的流程示意图。

图4显示为本发明的优化服务器内存资源利用率的系统的原理结构示意图。

图5显示为本发明的优化服务器内存资源利用率的系统的应用实例图。

元件标号说明

100 优化服务器内存资源利用率的系统

101 Docker引擎配置模块

102 Docker镜像安装模块

103 Docker容器集群模块

104 堆内存配置模块

105 Docker容器数量调整模块

S101~S105 步骤

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

本实施例的目的在于提供一种优化服务器内存资源利用率的方法及系统,用于解决现有技术无法有效优化服务器内存资源利用率和应用程序性能的问题。以下将详细阐述本实施例的一种优化服务器内存资源利用率的方法及系统的原理及实施方式,使本领域技术人员不需要创造性劳动即可理解本实施例的一种优化服务器内存资源利用率的方法及系统。

本实施例中的一种优化服务器内存资源利用率的方法及系统本发针对应用程序(例如日志分析系统)所在的服务器单机内存资源利用率和应用程序性能问题,提供一种改良的方法,本实施例中的一种优化服务器内存资源利用率的方法及系统通过结合Docker容器技术,可以解决应用程序(例如单机日志分析系统)的以下问题:

1)JVM堆内存配置过大,导致stop-the-world时间过长的问题;2)单机服务器内存(大于64GB)浪费的问题;3)提升应用程序(例如单机日志分析系统)性能的问题。

Docker是Paas提供商dotCloud开源的一个基于LXC的高级容器引擎,源代码托管在Github上,基于go语言并遵从Apache2.0协议开源。它让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,它们不依赖于任何语言、框架。如图1所示,显示为本发明的优化服务器内存资源利用率的方法及系统中采用的Docker容器的架构图,如图2所示,显示为现有技术中虚拟机的架构图。通过图1和图2的对比,可以知道Docker容器的架构和现有虚拟机的架构的区别,实际上,Docker可以理解为更为轻量级的虚拟机。

具体地,如图3所示,本实施例提供一种优化服务器内存资源利用率的方法,应用于装设Linux系统的服务器中,所述优化服务器内存资源利用率的方法包括以下步骤:

步骤S101,于服务器上配置Docker引擎。

步骤S102,于所述服务器上安装基于所述Docker引擎获取的所述服务器上应用程序的Docker镜像。Docker提供了命令行工具,通过命令行“docker pull<镜像地址>”可以将某个Docker镜像从Docker官方仓库或者私有仓库中拉到所述服务器。应用程序的Docker镜像的制作方法可以采用编写Dockerfile来实现。

于本实施例中,所述应用程序例如为实时日志分析应用程序,例如为AnyRobot日志分析系统,所述服务器即形成日志分析服务器。

例如,在日志分析服务器上安装基于所述Docker引擎获取的日志分析系统的Docker镜像。

即于本实施例中,例如在日志分析服务器上部署Docker Engine软件和AnyRobot日志分析系统。

步骤S103,利用安装的所述应用程序的Docker镜像启动多个用于控制所述应用程序运行的Docker容器,形成基于Docker容器的应用程序集群。

具体地,于本实施例中,通过配置所述应用程序的Docker镜像中的应用程序启动多个用于控制所述应用程序运行的Docker容器,形成基于Docker容器的AnyRobot日志分析系统集群。本实施例中的优化服务器内存资源利用率的方法通过Docker容器技术,可以启动多个日志分析系统的容器,组成集群,来提升日志分析系统的内存资源利用率和性能。

步骤S104,配置各所述Docker容器的堆内存的大小。

其中,所述Docker容器的堆内存的大小根据所述服务器的内存的大小设置,所述Docker容器的堆内存的大小小于所述服务器的内存的大小。

优选地,所述Docker容器的堆内存的大小范围为1GB~15GB,例如,所述服务器的内存的大小为32GB,优选设置所述Docker容器的堆内存的大小为4GB,例如设置每个日志分析系统的Docker容器的堆内存为4GB大小。

所以本发明通过多个容器集群的设置,降低了JVM垃圾回收过程中的卡顿,卡顿由原来的十几秒,到改良后业务层面感受不到卡顿,解决了由于JVM堆内存配置过大,导致时空停顿时间过长的问题,有效提升了应用程序的性能。

步骤S105,根据所述服务器的主机内存的大小实时动态调整所述Docker容器集群中Docker容器的数量。例如,根据所述服务器的主机内存的大小,继续增加日志分析系统的Docker容器数量。例如,所述服务器的主机内存的大小为64GB,设置每个日志分析系统的Docker容器的堆内存为11GB大小,形成基于Docker容器的应用程序集群时形成Docker容器的数量为3个,查看此时所述服务器的主机内存,内存剩余较大,调整日志分析系统的Docker容器数量为4个,增加了一个Docker容器。有效提升了服务器主机内存的利用率,解决了服务器内存资源浪费的问题。

本实施例还提供一种优化服务器内存资源利用率的系统,应用于装设Linux系统的服务器中,具体地,如图4所示,所述优化服务器内存资源利用率的系统100包括:Docker引擎配置模块101,Docker镜像安装模块102,Docker容器集群模块103,堆内存配置模块104以及Docker容器数量调整模块105。

具体地,于本实施例中,所述Docker引擎配置模块101用于服务器上配置Docker引擎。如图5所示的Docker Engine。

具体地,于本实施例中,所述Docker镜像安装模块102用于于所述服务器上安装基于所述Docker引擎获取的所述服务器上应用程序的Docker镜像。Docker提供了命令行工具,通过命令行“docker pull<镜像地址>”可以将某个Docker镜像从Docker官方仓库或者私有仓库中拉到所述服务器。应用程序的Docker镜像的制作方法可以采用编写Dockerfile来实现。

于本实施例中,如图5所示,所述应用程序例如为实时日志分析应用程序,例如为AnyRobot日志分析系统,所述服务器即形成日志分析服务器。

例如,在日志分析服务器上安装基于所述Docker引擎获取的日志分析系统的Docker镜像。

即于本实施例中,例如在日志分析服务器上部署Docker Engine软件和AnyRobot日志分析系统。

具体地,于本实施例中,所述Docker容器集群模块103用于利用安装的所述应用程序的Docker镜像启动多个用于控制所述应用程序运行的Docker容器,形成基于Docker容器的应用程序集群。

具体地,于本实施例中,所述Docker容器集群模块103通过配置所述应用程序的Docker镜像中的应用程序启动多个用于控制所述应用程序运行的Docker容器,形成基于Docker容器的应用程序集群。

所以本实施例中的优化服务器内存资源利用率的系统100通过Docker容器技术,可以启动多个日志分析系统的容器,组成集群,来提升日志分析系统的内存资源利用率和性能。

具体地,于本实施例中,所述堆内存配置模块104用于配置各所述Docker容器的堆内存的大小。

其中,所述Docker容器的堆内存的大小根据所述服务器的内存的大小设置,所述Docker容器的堆内存的大小小于所述服务器的内存的大小。

优选地,所述Docker容器的堆内存的大小范围为1GB~15GB,例如,所述服务器的内存的大小为32GB,优选设置所述Docker容器的堆内存的大小为4GB,例如设置每个日志分析系统的Docker容器的堆内存为4GB大小。

所以本发明通过多个容器集群的设置,降低了JVM垃圾回收过程中的卡顿,卡顿由原来的十几秒,到改良后业务层面感受不到卡顿,解决了由于JVM堆内存配置过大,导致时空停顿时间过长的问题,有效提升了应用程序的性能。

具体地,于本实施例中,所述Docker容器数量调整模块105用于根据所述服务器的主机内存的大小实时动态调整所述Docker容器集群中Docker容器的数量。

例如,根据所述服务器的主机内存的大小,继续增加日志分析系统的Docker容器数量。例如,所述服务器的主机内存的大小为64GB,设置每个日志分析系统的Docker容器的堆内存为11GB大小,形成基于Docker容器的应用程序集群时形成Docker容器的数量为3个,查看此时所述服务器的主机内存,内存剩余较大,调整日志分析系统的Docker容器数量为4个,增加了一个Docker容器。有效提升了服务器主机内存的利用率,解决了服务器内存资源浪费的问题。

此外,本实施例中还提供一种服务器,所述服务器中装设Linux系统,所述服务器上包含有如上所述的优化服务器内存资源利用率的系统100。所述服务器优选为日志分析服务器,所述日志分析服务器上部署Docker Engine软件和AnyRobot日志分析系统。

其中,上述已经对所述优化服务器内存资源利用率的系统100进行了详细说明,在此不再赘述。

综上所述,本发明通过多Docker容器组成的集群控制应用程序(例如实时日志分析应用程序)运行,有效提升了服务器主机内存的利用率,解决了服务器内存资源浪费的问题;本发明降低了JVM垃圾回收过程中的卡顿,卡顿由原来的十几秒,到改良后业务层面感受不到卡顿,解决了由于JVM堆内存配置过大,导致时空停顿时间过长的问题,有效提升了应用程序的性能。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1