基于性能监控的负载分配方法及终端设备与流程

文档序号:17147891发布日期:2019-03-19 23:09阅读:111来源:国知局
基于性能监控的负载分配方法及终端设备与流程

本发明属于数据处理技术领域,尤其涉及基于性能监控的负载分配方法、终端设备以及计算机可读存储介质。



背景技术:

主机是提供计算服务的设备,随着信息技术的发展和当今业务的复杂化,存在多个主机共同进行任务处理的场景,为了防止某个主机出现占用率过高、计算效率低下或者崩溃等情况,影响任务执行进程,故需要对主机的性能指标进行监控,并根据监控结果来进行任务调配。

现有技术中,通常是通过安装并运行监控软件来实现对主机的性能监控。但是,安装监控软件需要进行复杂的环境配置,过程繁琐,并且监控软件需要长时间在主机上运行,容易造成资源浪费。综上,现有技术中进行性能监控的操作过程繁琐,造成整个负载分配过程的效率低下。



技术实现要素:

有鉴于此,本发明实施例提供了基于性能监控的负载分配方法、终端设备以及计算机可读存储介质,以解决现有技术中进行负载分配的效率低下的问题。

本发明实施例的第一方面提供了一种基于性能监控的负载分配方法,包括:

基于安全外壳协议ssh与多个主机单独建立会话连接,并向每个所述主机发送监控指令,所述监控指令用于使所述主机查询负载信息,并将所述负载信息存储在所述主机本地的运行文件中,所述负载信息包括中央处理器占用率;

访问预设的任务池,若所述任务池中的负载任务达到预设的负载分配条件,则基于所述ssh获取多个所述主机本地的所述运行文件,提取出所述运行文件中的所述负载信息,并对所述负载信息进行数值处理得到可用负载值,其中,所述任务池用于向所述主机提供所述负载任务;

基于多个所述可用负载值生成可用负载序列,并根据所述可用负载序列为对应的多个所述主机依次分配所述负载任务。

本发明实施例的第二方面提供了一种终端设备,所述终端设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下步骤:

基于安全外壳协议ssh与多个主机单独建立会话连接,并向每个所述主机发送监控指令,所述监控指令用于使所述主机查询负载信息,并将所述负载信息存储在所述主机本地的运行文件中,所述负载信息包括中央处理器占用率;

访问预设的任务池,若所述任务池中的负载任务达到预设的负载分配条件,则基于所述ssh获取多个所述主机本地的所述运行文件,提取出所述运行文件中的所述负载信息,并对所述负载信息进行数值处理得到可用负载值,其中,所述任务池用于向所述主机提供所述负载任务;

基于多个所述可用负载值生成可用负载序列,并根据所述可用负载序列为对应的多个所述主机依次分配所述负载任务。

本发明实施例的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如下步骤:

基于安全外壳协议ssh与多个主机单独建立会话连接,并向每个所述主机发送监控指令,所述监控指令用于使所述主机查询负载信息,并将所述负载信息存储在所述主机本地的运行文件中,所述负载信息包括中央处理器占用率;

访问预设的任务池,若所述任务池中的负载任务达到预设的负载分配条件,则基于所述ssh获取多个所述主机本地的所述运行文件,提取出所述运行文件中的所述负载信息,并对所述负载信息进行数值处理得到可用负载值,其中,所述任务池用于向所述主机提供所述负载任务;

基于多个所述可用负载值生成可用负载序列,并根据所述可用负载序列为对应的多个所述主机依次分配所述负载任务。

本发明实施例与现有技术相比存在的有益效果是:

本发明实施例基于安全外壳协议(secureshell,ssh)与多个主机单独建立会话连接,并向每个主机发送监控指令,使得主机根据监控指令将自身的负载信息存在主机本地,然后,在进行负载任务分配时,基于ssh获取多个主机本地运行文件中的负载信息,并对负载信息进行数值处理得到可用负载值,从而按照可用负载值为对应的主机分配负载任务,本发明实施例基于ssh和监控指令实现性能监控,相较于监控软件来说配置较为简单,消耗资源也较少,再加上通过计算出的可用负载值进行负载任务的分配,提升了负载分配过程的效率和准确性。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例一提供的基于性能监控的负载分配方法的实现流程图;

图2是本发明实施例二提供的基于性能监控的负载分配方法的实现流程图;

图3是本发明实施例三提供的基于性能监控的负载分配方法的实现流程图;

图4是本发明实施例四提供的基于性能监控的负载分配方法的实现流程图;

图5是本发明实施例五提供的终端设备的结构框图;

图6是本发明实施例六提供的终端设备的示意图。

具体实施方式

以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。

为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。

图1示出了本发明实施例提供的基于性能监控的负载分配方法的实现流程,详述如下:

在s101中,基于安全外壳协议ssh与多个主机单独建立会话连接,并向每个所述主机发送监控指令,所述监控指令用于使所述主机查询负载信息,并将所述负载信息存储在所述主机本地的运行文件中,所述负载信息包括中央处理器空闲率。

在本发明实施例中,性能监控和负载分配的对象为多个主机,为了便于说明,假设主机搭载的是linux系统,但应获知的是,搭载其他操作系统的主机也可应用在本发明实施例中。多个主机可位于一个集群(cluster)系统中,每个主机都具备执行负载任务的软件条件和硬件条件,当然除了集群系统外,多个主机也可以其他的形式存在,另外,本发明实施例的执行主体为多个主机外的终端设备,该终端设备相当于client/server架构中的客户端,主机相当于架构中的服务器。为了实现对多个主机的性能监控,终端设备首先建立与多个主机之间的通信连接,具体地,基于安全外壳协议ssh,终端设备与每个主机之间单独建立会话连接,ssh为建立在应用层基础上的安全协议,也是专为远程登录会话和其他网络服务提供安全性的协议,故可应用在本发明实施例中,从而防止远程管理过程中的信息泄露问题。值得一提的是,在建立会话连接之前,获取建立会话连接所需的待连接的主机的主机名(host)、用户名(username)、密码(password)和端口号(port),其中,ssh默认的端口号为22,但在实际应用场景中根据具体设置的不同,端口号也可能不同。

终端设备在与主机建立会话连接后,向主机发送监控指令,该监控指令用于使主机查询自身的负载信息,并将负载信息存储在主机本地的运行文件中,在此基础上,还可在监控指令中配置存储目录,从而使得主机将负载信息存储在监控指令指定的存储目录中。本发明实施例对监控指令的具体格式并不进行限定,举例来说,监控指令可仅为与查询相关的linux命令,进一步地,监控指令包括两部分的linux命令,第一部分的linux命令用于使主机查询负载信息,比如该部分的linux命令可为top命令或vmstat命令等;第二部分的linux命令用于使主机将负载信息存储在运行文件中,比如该部分的linux命令可为touch命令或vi命令等。主机根据监控指令获取到的负载信息包括中央处理器(centralprocessingunit,cpu)空闲率,当然,根据实际应用场景的不同,负载信息还可包括更多的内容,比如还可包括正在运行的进程数和空闲内存总量等。

可选地,基于已建立的会话连接向每个主机上传监控脚本,并输入用于启动监控脚本的远程启动命令,监控脚本用于使主机查询负载信息,并将负载信息存储在主机本地的运行文件中。监控指令除了可以为与查询相关的linux命令外,在本发明实施例中,监控指令还可以为上传监控脚本的命令以及启动监控脚本的远程启动命令,举例来说,具体代码可如下:

<uploadid="upload_monitor_sh">

<from>/home/user/monitor.sh</from>

<to>/home/user</to>

</upload>

<cmds>

<cmdtype="upload">upload_monitor_sh</cmd>

<cmdtype="ssh">bash/home/user/monitor.sh</cmd>

</cmds>

在上述例子中,以<upload></upload>标签来定义监控脚本的上传步骤,“upload_monitor_sh”为上传步骤的名称,<from></from>标签代表监控脚本的来源,“/home/user/monitor.sh”是监控脚本monitor_sh在终端设备的存储目录,<to></to>标签代表监控脚本的去向,“/home/user”是设置的监控脚本monitor_sh在主机的存储目录。另外,<cmds></cmds>标签(cmds指示命令集)之间的代码为上传监控脚本的命令以及远程启动命令,在代码中,“type”指示不同的命令类型,“type="upload"”是指上传监控脚本的命令,在“upload”所在的cmd标签后添加“upload_monitor_sh”的名称,即可启动<upload></upload>标签内的监控脚本的上传步骤。“type="ssh"”是指通过ssh在主机上执行远程命令,通过执行“bash/home/user/monitor.sh”,从而使主机启动监控脚本,在监控脚本的执行过程中,查询负载信息,并将负载信息存储在主机本地的运行文件中。在此基础上,还可创建基于上述代码的可扩展标记语言文件,通过执行可扩展标记语言文件,便可快捷完成负载信息的查询和存储,不需每次都手动输入代码。通过上述方法,即通过在主机上执行监控脚本,避免手动输入命令,提升了对负载信息的处理效率。

在s102中,访问预设的任务池,若所述任务池中的负载任务达到预设的负载分配条件,则基于所述ssh获取多个所述主机本地的所述运行文件,提取出所述运行文件中的所述负载信息,并对所述负载信息进行数值处理得到可用负载值,其中,所述任务池用于向所述主机提供所述负载任务。

在本发明实施例中,终端设备还通过预设的任务池接口访问任务池,该任务池包括有多个负载任务,该负载任务用于被主机执行,比如任务池可为集群系统中的任务调度模块(schedule)。若终端设备检测到任务池中的负载任务达到预设的负载分配条件,则基于终端设备与多个主机之间建立的会话连接,获取每个主机本地存储的运行文件,其中,负载分配条件可以是任务池中的负载任务的数量达到预设数量(比如100个),或者是检测到任务池中的负载任务包括有负载分配标识,该负载分配标识用于提示进行负载分配,本发明实施例对负载分配条件的具体内容不做限定。值得一提的是,本步骤中建立的会话连接可为新建的会话连接,也可为步骤s101中已建立的会话连接。在得到多个主机的运行文件后,由于运行文件可能不仅仅用于存储负载信息,即可能还用于存储主机运行的日志等其他内容,故对运行文件进行关键词检索,提取出运行文件中的负载信息,比如对运行文件进行“cpu(s):”的关键词检索,从而提取出cpu空闲率。

在得到负载信息后,对负载信息进行数值处理得到可用负载值,该可用负载值为对应的主机可分配的负载任务的数量。在负载信息仅包括cpu空闲率的情况下,计算公式一如下:

在计算公式一中,valueload为可用负载值,ratecpu为某个主机的cpu空闲率,rateregular为预设的预留cpu空闲率,用于防止为主机分配过多负载任务造成的cpu占用过高,可根据实际应用场景进行自定义设置,比如可将预留cpu空闲率设置为10%,则在主机当前的cpu空闲率降低到10%时,即当ratecpu<rateregular时,不再为该主机分配负载任务。计算公式一中的ratetask是一个负载任务在主机中执行时的cpu占用率,假设在本发明实施例中,主机需要创建一个进程执行一个负载任务,则可统计以往主机执行负载任务时,负载任务所在进程的cpu占用率,并对统计到的多个进程对应的cpu占用率取均值得到ratetask。除此之外,也可更改步骤s101中发送的监控指令,使负载信息中包含主机正在执行的负载任务对应进程的cpu占用率,并在本步骤根据负载信息中的cpu占用率(或者多个进程的cpu占用率的均值)更新ratetask。

在负载信息包括cpu空闲率和空闲内存总量的情况下,计算公式二如下:

且sizememory≥sizeregular

计算公式二在计算公式一的基础上增加了sizememory、sizeregular和sizetask,其中,sizememory为空闲内存总量,sizeregular为预设的预留内存空闲量,用于防止为主机分配过多负载任务造成的内存占用过高,可根据实际应用场景进行自定义设置,比如可将预留内存空闲量设置为0.5吉字节(gb),则在主机当前的空闲内存总量降低到0.5gb时,即当sizememory<sizeregular时,不再为该主机分配负载任务。计算公式二中的sizetask是一个负载任务在主机中执行时的内存占用量,与上述获取ratetask的方式同样地,可获取以往的负载任务所在进程的内存占用量,并对多个内存占用率取均值得到sizetask,也可更改步骤s101中发送的监控指令,使负载信息中包含主机正在执行的负载任务对应进程的内存占用量,并在本步骤根据负载信息中的内存占用量(或者多个进程的内存占用量的均值)更新sizetask。

在s103中,基于多个所述可用负载值生成可用负载序列,并根据所述可用负载序列为对应的多个所述主机依次分配所述负载任务。

若可用负载值的数值越大,证明对应的主机越空闲,故在得到多个主机的可用负载值后,基于多个可用负载值生成可用负载序列,并根据可用负载序列为对应的多个主机依次分配负载任务,分配的负载任务个数与对应的可用负载值相同,任务分配可通过调用任务池自带的任务调度功能接口完成,其中,本发明实施例对可用负载序列中多个可用负载值的顺序并不做限定,但在根据可用负载序列分配负载任务中,优先为数值最大的可用负载值对应的主机分配负载任务。举例来说,可用负载序列包括数值为4的可用负载值valueload-a,数值为3的可用负载值valueload-b,数值为2的可用负载值valueload-c,则首先将任务池中的4个负载任务分配给valueload-a对应的主机hosta,然后将任务池中的其他3个负载任务分配给valueload-b对应的主机hostb,最后将任务池中的其他2个负载任务分配给valueload-c对应的主机hostc。

值得一提的是,若在分配负载任务的过程中,任务池中的负载任务被分配完毕,则暂停负载任务分配,在新的负载任务被添加至任务池后,再执行负载任务分配。以上述例子进行举例,比如任务池中仅有2个负载任务,则在将任务池中的2个负载任务分配给valueload-a对应的主机hosta后,由于负载任务被分配完毕,则停止分配过程,同时保留分配状态,在新的负载任务被添加至任务池后,再将负载任务分配至主机hosta。若根据可用负载序列为对应的多个主机分配完毕负载任务后,任务池中还存在未分配的负载任务,则等待下一次生成可用负载序列时,再根据新生成的可用负载序列分配负载任务。

可选地,若任务池中的负载任务对应有优先级,则优先分配优先级较高的负载任务。在本发明实施例中,若任务池中的负载任务对应有优先级,则在根据可用负载序列为对应的多个主机依次分配负载任务的前提下,优先将优先级较高的负载任务分配至主机中,提升了负载分配的有序性。

通过图1所示实施例可知,在本发明实施例中,终端设备基于ssh与多个主机单独建立会话连接,并向每个主机发送监控指令,监控指令用于使主机查询负载信息,并将负载信息存储在主机本地的运行文件中,然后终端设备访问预设的任务池,若任务池中的负载任务达到预设的负载分配条件,则基于ssh获取多个主机本地的运行文件,提取出运行文件中的负载信息,并对负载信息进行数值处理得到可用负载值,再基于多个可用负载值生成可用负载序列,并根据可用负载序列为对应的多个主机依次分配负载任务,本发明实施例通过发送监控指令获取负载信息,并且通过计算可用负载值来分配负载任务,提升了负载分配过程的效率和准确性。

图2所示,是在本发明实施例一的基础上,对根据可用负载序列为对应的多个主机依次分配负载任务的过程进行细化后得到的一种方法。本发明实施例提供了基于性能监控的负载分配方法的实现流程图,如图2所示,该负载分配方法可以包括以下步骤:

在s201中,获取预设的多个可用区间,每个所述可用区间对应所述可用负载值的一个数值范围,并且每个所述可用区间对应一个均衡值。

为了防止某个主机计算出的可用负载值过高,导致按照可用负载值为该主机分配负载任务时,出现该主机无法及时处理过多负载任务的情况,在本发明实施例中,预先定义多个可用区间,每个可用区间对应可用负载值的一个数值范围,并且每个可用区间对应一个预设的均衡值,便于对可用负载值进行进一步均衡。

在s202中,确定所述可用负载序列中的所述可用负载值对应的所述可用区间,并以所述可用区间对应的所述均衡值覆盖所述可用负载值,生成均衡负载序列。

在确定多个可用区间后,进一步确定可用负载序列中的可用负载值对应的可用区间的是,,比如某个可用区间的数值范围为5至10,而可用负载序列中的一个可用负载值为6,由于6处于5至10的数值范围内,故可确定该可用区间与该可用负载值对应。值得一提为了防止对应关系出现错误,在设置可用区间时,使多个可用区间的数值范围不出现重合。在确定出可用负载值对应的可用区间后,采用可用区间对应的均衡值覆盖可用负载值,当可用负载序列中的所有可用负载值都被覆盖完毕后,生成均衡负载序列。举例来说,数据区间intervala的数值范围为1到2,对应的均衡值为1,数据区间intervalb的数值范围为3到4,对应的均衡值为3,可用负载序列包括可用负载值2和4,则以均衡值1覆盖可用负载值2,以均衡值3覆盖可用负载值4,即生成的均衡负载序列包括均衡值1和3。

在s203中,根据所述均衡负载序列的多个所述均衡值为多个所述主机依次分配所述负载任务,直到所述任务池中的所述负载任务被分配完毕。

在本步骤中,根据均衡负载序列的多个均衡值为多个主机依次分配负载任务,直到任务池中的负载任务被分配完毕为止,其中,均衡值与主机之间的对应关系和可用负载值与主机之间的对应关系一致,在分配负载任务时,同样是优先为最大的均衡值对应的主机分配与均衡值同样数量的负载任务。

通过图2所示实施例可知,在本发明实施例中,获取预设的多个可用区间,每个可用区间对应可用负载值的一个数值范围,并且每个可用区间对应一个均衡值,确定可用负载序列中的可用负载值对应的可用区间,并以可用区间对应的均衡值覆盖可用负载值,生成均衡负载序列,并根据均衡负载序列的多个均衡值为多个主机依次分配负载任务,直到任务池中的负载任务被分配完毕,本发明实施例以对应的均衡值覆盖可用负载值,并按照均衡值执行负载任务的分配,使得负载分配更加均衡。

图3所示,是在本发明实施例一的基础上,并在任务池还包含多个捆绑任务,多个捆绑任务用于在一个主机上执行的基础上,对根据可用负载序列为对应的多个主机依次分配负载任务的过程进行细化后得到的一种方法。本发明实施例提供了基于性能监控的负载分配方法的实现流程图,如图3所示,该负载分配方法可以包括以下步骤:

在s301中,若所述可用负载序列中数值最大的所述可用负载值大于或等于所述多个捆绑任务的数量,则将所述多个捆绑任务分配至数值最大的所述可用负载值对应的主机,并根据所述可用负载序列为其他的多个所述主机分配所述负载任务。

在实际应用场景中,任务池在包括负载任务的基础上,可能还包括多个捆绑任务,多个捆绑任务必须被分配至单个主机上执行,比如被拆分为将一笔复杂交易拆分为多笔子交易,并为每笔子交易创建一个捆绑任务。分配多个捆绑任务的过程与分配负载任务的过程相互独立,在分配多个捆绑任务时,获取可用负载序列中数值最大的可用负载值,并判断该可用负载值是否小于多个捆绑任务的数量,若该可用负载值大于或等于多个捆绑任务的数量,则将多个捆绑任务分配至该可用负载值对应的主机,并根据可用负载序列为其他的多个主机分配任务池中的负载任务。

在s302中,若所述可用负载序列中数值最大的所述可用负载值小于所述多个捆绑任务的数量,则根据所述可用负载序列为多个所述主机依次分配所述任务池中的所述负载任务,其中,对数值最大的所述可用负载值对应的所述主机不分配所述负载任务。

若数值最大的可用负载值小于多个捆绑任务的数量,则暂时不处理多个捆绑任务,而是根据可用负载序列为多个主机依次分配任务池中的负载任务,其中,对数值最大的可用负载值对应的主机不分配负载任务,便于在该主机的可用负载值大于或等于多个捆绑任务的数量时,将多个捆绑任务分配至该主机。

通过图3所示实施例可知,在本发明实施例中,若可用负载序列中数值最大的可用负载值大于或等于多个捆绑任务的数量,则将多个捆绑任务分配至数值最大的可用负载值对应的主机,并根据可用负载序列为其他的多个主机分配负载任务;若可用负载序列中数值最大的可用负载值小于多个捆绑任务的数量,则根据可用负载序列为多个主机依次分配任务池中的负载任务,其中,对数值最大的可用负载值对应的主机不分配负载任务,本发明实施例在任务池还包括多个捆绑任务时,将多个捆绑任务分配至最空闲的主机,提升了多个捆绑任务的执行成功率。

图4所示,是在本发明实施例一的基础上,并在负载信息还包括查询时间,查询时间为主机查询负载信息的时间的基础上,对基于所述ssh获取多个主机本地的运行文件,提取出运行文件中的负载信息的过程进行扩展后得到的一种方法。本发明实施例提供了基于性能监控的负载分配方法的实现流程图,如图4所示,该负载分配方法可以包括以下步骤:

在s401中,查看基于所述ssh获取到的所述运行文件中的所述查询时间,并判断所述查询时间与发送所述查询指令的发送时间之间的差值是否小于预设时长,若所述差值大于或等于所述预设时长,则基于所述ssh再次向所述运行文件对应的所述主机发送所述查询指令。

在本发明实施例中,负载信息中还包括查询时间,该查询时间为主机查询负载信息的时间。终端设备在发送查询指令时,记录当前的时间为发送时间,并在获取到主机的运行文件后,进一步获取运行文件的负载信息中的查询时间,计算查询时间与发送时间之间的差值(差值=查询时间-发送时间)。终端设备在得到差值后,判断该差值是否小于预设时长,若该差值小于预设时长,证明负载信息与查询指令对应,则继续执行对负载信息进行数值处理得到可用负载值的操作;若该差值大于或等于预设时长,证明负载信息未及时更新,则为了防止得到错误的可用负载值,终端设备基于ssh再次向运行文件对应的主机发送查询指令。其中,预设时长可根据实际应用场景进行自定义,比如可将预设时长确定为10秒。

可选地,终端设备基于linux系统的计划任务工具向每个主机定时发送监控指令。在本发明实施例中,终端设备还可基于linux系统的计划任务工具如crontab命令配置监控指令的发送时间,比如将发送时间配置为每小时的第一分钟,从而省去人工操作,提升了发送监控指令的便捷性。

在s402中,基于所述ssh获取所述主机的所述运行文件,若所述运行文件中未出现新的所述负载信息,则输出基于所述主机的报警信息。

终端设备在再次发送监控指令后,基于ssh重新获取该主机的运行文件,若运行文件中出现了新的负载信息(如负载信息中的查询时间出现了更新),则执行对负载信息进行数值处理得到可用负载值的操作;若运行文件中仍未出现新的负载信息,则输出基于该主机的报警信息,提示用户对该主机进行查看。值得一提的是,为了给主机预留执行监控指令的时间,终端设备在再次发送监控指令的预设时长后,再获取主机的运行文件。

通过图4所示实施例可知,在本发明实施例中,查看基于ssh获取到的运行文件中的查询时间,并判断查询时间与发送查询指令的发送时间之间的差值是否小于预设时长,若差值大于或等于预设时长,则基于ssh再次向运行文件对应的主机发送查询指令,并获取主机的运行文件,若运行文件中未出现新的负载信息,则输出基于主机的报警信息,本发明实施例通过对负载信息的更新程度进行检测,并对未及时更新负载信息的主机进行报警,有效地防止了负载任务的错误分配。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

图5示出了本发明实施例提供的终端设备的结构框图,该终端设备包括的各单元用于执行图1对应的实施例中的各步骤。具体请参阅图1与图1所对应的实施例中的相关描述。为了便于说明,仅示出了与本实施例相关的部分。

参见图5,所述终端设备包括:

发送单元51,用于基于安全外壳协议ssh与多个主机单独建立会话连接,并向每个所述主机发送监控指令,所述监控指令用于使所述主机查询负载信息,并将所述负载信息存储在所述主机本地的运行文件中,所述负载信息包括中央处理器空闲率;

处理单元52,用于访问预设的任务池,若所述任务池中的负载任务达到预设的负载分配条件,则基于所述ssh获取多个所述主机本地的所述运行文件,提取出所述运行文件中的所述负载信息,并对所述负载信息进行数值处理得到可用负载值,其中,所述任务池用于向多个所述主机提供所述负载任务;

分配单元53,用于基于多个所述可用负载值生成可用负载序列,并根据所述可用负载序列为对应的多个所述主机依次分配所述负载任务。

可选地,分配单元53包括:

获取单元,用于获取预设的多个可用区间,每个所述可用区间对应所述可用负载值的一个数值范围,并且每个所述可用区间对应一个均衡值;

覆盖单元,用于确定所述可用负载序列中的所述可用负载值对应的所述可用区间,并以所述可用区间对应的所述均衡值覆盖所述可用负载值,生成均衡负载序列;

分配子单元,用于根据所述均衡负载序列的多个所述均衡值为多个所述主机依次分配所述负载任务,直到所述任务池中的所述负载任务被分配完毕。

可选地,任务池还包含多个捆绑任务,多个捆绑任务用于在一个主机上执行,分配单元53包括:

第一分配单元,用于若所述可用负载序列中数值最大的所述可用负载值大于或等于所述多个捆绑任务的数量,则将所述多个捆绑任务分配至数值最大的所述可用负载值对应的主机,并根据所述可用负载序列为其他的多个所述主机分配所述负载任务;

第二分配单元,用于若所述可用负载序列中数值最大的所述可用负载值小于所述多个捆绑任务的数量,则根据所述可用负载序列为多个所述主机依次分配所述任务池中的所述负载任务,其中,对数值最大的所述可用负载值对应的所述主机不分配所述负载任务。

可选地,负载信息还包括查询时间,查询时间为主机查询负载信息的时间,处理单元52还包括:

再次发送单元,用于查看基于所述ssh获取到的所述运行文件中的所述查询时间,并判断所述查询时间与发送所述查询指令的发送时间之间的差值是否小于预设时长,若所述差值大于或等于所述预设时长,则基于所述ssh再次向所述运行文件对应的所述主机发送所述查询指令;

报警单元,用于基于所述ssh获取所述主机的所述运行文件,若所述运行文件中未出现新的所述负载信息,则输出基于所述主机的报警信息。

可选地,发送单元51包括:

上传单元,用于基于已建立的所述会话连接向每个所述主机上传监控脚本,并输入用于启动所述监控脚本的远程启动命令,所述监控脚本用于使所述主机查询所述负载信息,并将所述负载信息存储在所述主机本地的运行文件中。

因此,本发明实施例提供的终端设备基于ssh进行性能监控,并计算多个主机的可用负载值,按照可用负载值分配负载任务,提升了负载分配的效率和准确性。

图6是本发明实施例提供的终端设备的示意图。如图6所示,该实施例的终端设备6包括:处理器60、存储器61以及存储在所述存储器61中并可在所述处理器60上运行的计算机程序62,例如基于性能监控的负载分配程序。所述处理器60执行所述计算机程序62时实现上述各个基于性能监控的负载分配方法实施例中的步骤,例如图1所示的步骤s101至s103。或者,所述处理器60执行所述计算机程序62时实现上述各终端设备实施例中各单元的功能,例如图5所示单元51至53的功能。

示例性的,所述计算机程序62可以被分割成一个或多个单元,所述一个或者多个单元被存储在所述存储器61中,并由所述处理器60执行,以完成本发明。所述一个或多个单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序62在所述终端设备6中的执行过程。例如,所述计算机程序62可以被分割成发送单元、处理单元和分配单元,各单元具体功能如下:

发送单元,用于基于安全外壳协议ssh与多个主机单独建立会话连接,并向每个所述主机发送监控指令,所述监控指令用于使所述主机查询负载信息,并将所述负载信息存储在所述主机本地的运行文件中,所述负载信息包括中央处理器空闲率;

处理单元,用于访问预设的任务池,若所述任务池中的负载任务达到预设的负载分配条件,则基于所述ssh获取多个所述主机本地的所述运行文件,提取出所述运行文件中的所述负载信息,并对所述负载信息进行数值处理得到可用负载值,其中,所述任务池用于向多个所述主机提供所述负载任务;

分配单元,用于基于多个所述可用负载值生成可用负载序列,并根据所述可用负载序列为对应的多个所述主机依次分配所述负载任务。

所述终端设备6可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器60、存储器61。本领域技术人员可以理解,图6仅仅是终端设备6的示例,并不构成对终端设备6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等。

所称处理器60可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

所述存储器61可以是所述终端设备6的内部存储单元,例如终端设备6的硬盘或内存。所述存储器61也可以是所述终端设备6的外部存储设备,例如所述终端设备6上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器61还可以既包括所述终端设备6的内部存储单元也包括外部存储设备。所述存储器61用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器61还可以用于暂时地存储已经输出或者将要输出的数据。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将所述终端设备的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本发明所提供的实施例中,应该理解到,所揭露的终端设备和方法,可以通过其它的方式实现。例如,以上所描述的终端设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

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