CN105471614A - 过载保护方法、装置及服务器 - Google Patents
过载保护方法、装置及服务器 Download PDFInfo
- Publication number
- CN105471614A CN105471614A CN201410460897.6A CN201410460897A CN105471614A CN 105471614 A CN105471614 A CN 105471614A CN 201410460897 A CN201410460897 A CN 201410460897A CN 105471614 A CN105471614 A CN 105471614A
- Authority
- CN
- China
- Prior art keywords
- core
- cpu
- client
- consumption data
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供一种能够精确控制服务器负载的负载保护方法、装置及服务器。其中,所述方法包括:获取预定采样周期内的CPU资源消耗数据;根据CPU资源消耗数据,计算在所述预定采样周期内,用于处理客户端请求的进程的CPU占用率;以及若所述CPU占用率超过预定阈值,则拒绝所述进程处理来自所述客户端的请求,若所述CPU占用率未超过预定阈值,所述进程在下一个预定采样周期继续处理来自所述客户端的请求。
Description
技术领域
本发明涉及互联网通信领域,尤其涉及一种过载保护方法、装置及服务器。
背景技术
客户端与服务器之间的交互是目前应用非常广泛的一种网络交互模式。其中,客户端通过请求与服务器通信,来完成各种数据交互。
为了解决服务器接收到太多来自客户端的请求时无法有效处理的情况,现有技术中常应用于服务器中的过载保护方法为,通过限制处理客户端的每段预定采样周期内的请求量来控制服务器负载,使服务器保持在某个负载水平之下。具体的,包括:定义一个变量作为计数器,并初始化为0,在一段预定采样周期(例如1秒)内累计计算接收并进行处理的请求数,在这段时间间隔内,当累计请求数不超过预定阈值(例如1000)时,正常处理请求;在同一段时间间隔内,当累计请求数超过预定阈值时,拒绝接受新的请求。超过该段时间间隔后,重新把计数器置零,并重新计算下一段时间间隔内接受的请求数。
但是,一方面,每个请求消耗的性能可能不同,现有技术无法精确控制服务器的负载;另一方面,如果在限制每段时间间隔的请求量的预定阈值时,评估每个请求的消耗性能,评估又比较繁琐;而且,对不同配置的服务器,需要进行不同的请求书配置,配置管理复杂。
发明内容
有鉴于此,本发明提供一种能够精确控制服务器负载的负载保护方法、装置及服务器。
一种过载保护方法,包括:获取预定采样周期内的CPU资源消耗数据;计算在所述预定采样周期内,用于处理客户端请求的进程的CPU占用率;以及若所述CPU占用率超过预定阈值,则拒绝所述进程处理来自所述客户端的请求,若所述CPU占用率未超过预定阈值,所述进程在下一个预定采样周期继续处理来自所述客户端的请求。
一种过载保护装置,包括:数据获取模块,用于获取预定采样周期内的Cpu资源消耗数据;数据处理模块,用于计算在所述预定采样周期内,用于处理客户端请求的进程的CPU占用率;以及请求处理模块,用于若所述CPU占用率超过预定阈值,则拒绝所述进程处理来自所述客户端的请求,若所述CPU占用率未超过预定阈值,所述进程在下一个预定采样周期继续处理来自所述客户端的请求。
一种服务器,包括存储器以及处理器,所述存储器用于存储本发明实施例提供的过载保护装置的模块,所述处理器用于运行存储在所述存储器内的所述过载保护装置的模块。
本发明实施例提供的过载保护方法、装置及服务器,通过获取用于处理客户端请求的进程的CPU占用率来衡量该进程的负载,相对于现有技术中根据请求数来控制服务器负载的方法,精确度更高,而且无需针对不同的服务器进行配置,针对各种服务器都可以实现自动化管理,无需进行手动干预。
为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
图1为本发明提供的一种过载保护方法及装置的应用环境图。
图2示出了一种服务器的结构框图。
图3为本发明第一实施例提供的过载保护方法的流程图。
图4为本发明第二实施例提供的过载保护方法的流程图。
图5为本发明第二实施例提供的过载保护方法中部分流程的具体流程图。
图6为本发明第三实施例提供的过载保护方法的流程图。
图7为本发明第四实施例提供的过载保护装置的结构框图。
图8为图7的装置的存储环境示意图。
图9为本发明第五实施例提供的过载保护装置的结构框图。
具体实施方式
为更进一步阐述本发明为实现预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明的具体实施方式、结构、特征及其功效,详细说明如后。
本发明实施例所提供的过载保护方法可应用于如图1所示的应用环境中,实现对服务器的过载保护。如图1所示,用户终端100、服务器200位于无线网络或有线网络中,通过该无线网络或有线网络,用户终端100装载有各种客户端与服务器200进行数据交互。
用户终端100可以包括智能手机、平板电脑、电子书阅读器、MP3播放器(MovingPictureExpertsGroupAudioLayerIII,动态影像专家压缩标准音频层面3)、MP4(MovingPictureExpertsGroupAudioLayerIV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机、台式机计算机、车载电脑、穿戴设备等等。
图2示出了一种服务器的结构框图。如图2所示,服务器200包括:存储器201、处理器202以及网络模块203。
可以理解,图2所示的结构仅为示意,服务器200还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。图2中所示的各组件可以采用硬件、软件或其组合实现。另外,本发明实施例中的服务器还可以包括多个具体不同功能的服务器。
存储器201可用于存储软件程序以及模块,如本发明实施例中的过载保护方法及装置对应的程序指令/模块,处理器202通过运行存储在存储器201内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现本发明实施例中的过载保护方法。存储器201可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器201可进一步包括相对于处理器202远程设置的存储器,这些远程存储器可以通过网络连接至服务器200。进一步地,上述软件程序以及模块还可包括:服务模块221以及操作***222。其中操作***222,例如可为LINUX、UNIX、WINDOWS,其可包括各种用于管理***任务(例如内存管理、存储设备控制、电源管理等)的软件组件和/或驱动,并可与各种硬件或软件组件相互通讯,从而提供其他软件组件的运行环境。服务模块221运行在操作***222的基础上,并通过操作***222的网络服务监听来自网络的请求,根据请求完成相应的数据处理,并返回处理结果给客户端。也就是说,服务模块221用于向客户端提供网络服务。
网络模块203用于接收以及发送网络信号。上述网络信号可包括无线信号或者有线信号。在一个实例中,上述网络信号为有线网络信号。此时,网络模块203可包括处理器、随机存储器、转换器、晶体振荡器等元件。
于本发明实施例中,客户端可安装于用户终端100。本发明实施例中,客户端可以是安装于用户终端100的各种应用,例如:用户终端100中的即时通信应用(例如QQ、微信等)、浏览器、或者游戏应用等,用户在用户终端100中输入用户帐号及密码可以登录对应的应用并且使用服务器200提供的各种业务。
为更进一步阐述本发明为实现预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明的具体实施方式、结构、特征及其功效,详细说明如后。
第一实施例
图3为本发明第一实施例提供的过载保护方法的流程图。结合图1,本实施例描述的是服务器的处理流程,本实施例的过载保护方法包括以下步骤:
步骤S11,获取预定采样周期内的CPU资源消耗数据。
CPU是CentralProcessingUnit,中央处理器的英文简称,也就是通常所说的处理器,是一块超大规模的集成电路。CPU根据从存储器提取到的指令来决定其执行行为。本发明实施例中,CPU资源消耗数据指的是CPU所消耗的总的资源,例如,在Linux操作***中,CPU资源消耗数据指的是CPU处于用户态执行的时间、***内核执行的时间以及空闲***进程执行的时间的总和。
步骤S12,根据所述CPU资源消耗数据,计算在所述预定采样周期内,用于处理客户端请求的进程的CPU占用率。
服务器的操作***可以同时启动多个进程,操作***将客户端应用程序放入到一个进程中,即由该进程运行该客户端应用程序并处理对应的客户端请求。操作***根据客户端应用程序与进程的对应关系,可以获得CPU用于处理客户端请求的进程的实际消耗的资源数据,然后根据计算实际消耗的资源数据/CPU资源消耗数据的值,获得用于处理客户端请求的进程的CPU占用率。
步骤S13,若所述CPU占用率超过预定阈值,则拒绝所述进程处理来自所述客户端的请求,若所述CPU占用率未超过预定阈值,所述进程在下一个预定采样周期继续处理来自所述客户端的请求。
本发明实施例提供的过载保护方法,通过获取用于处理客户端请求的进程的CPU占用率来衡量该进程的负载,相对于现有技术中根据请求数来控制服务器负载的方法,精确度更高,而且无需针对不同的服务器进行配置,针对各种服务器都可以实现自动化管理,无需进行手动干预。
第二实施例
图4为本发明第二实施例提供的业务请求的处理方法的流程图。结合图1,本实施例描述的是服务器的处理流程,本实施例提供的业务请求的处理方法包括以下步骤:
步骤S21,获取预定采样周期内的CPU资源消耗数据以及服务器中的CPU核心数。
目前大多数的CPU都采用的是多核心CPU,多核心CPU可以将大规模并行处理器中的对称多处理器集成到同一芯片内,各个处理器并行执行不同的进程。
所获取的CPU资源消耗数据中包括了每个核心的各自的CPU资源消耗数据以及总的CPU资源消耗数据。
步骤S22,根据所述CPU核心数以及所述CPU资源消耗数据,计算在所述预定采样周期内,用于处理客户端请求的进程在每个核心的CPU占用率。
一个进程一般是对应于一个可执行文件(如.exe文件),一个进程可以包括多个线程(多线程程序),每个线程运行在一个CPU核心中,因此,对于多线程的进程,会与多个核心对应,就是单线程的进程,也可以由***指定采用哪个核心来运行。例如,在本发明的实施例中,用于处理客户端请求的进程被指定与CPU中的4个核心相对应。
请参照图5,步骤S22进一步可以包括:
步骤S221,根据CPU资源消耗数据,获取用于处理客户端请求的进程在每个核心的资源消耗数据;
步骤S222,根据每个核心的资源消耗数据以及***配置的空闲时间消耗数据,获取每个核心的实际消耗的资源数据;
步骤S223,计算每个核心的实际消耗的资源数据与每个核心的资源消耗数据的比值,得到用于处理客户端请求的进程在每个核心的CPU占用率。
步骤S23,判断每个核心的CPU占用率是否超过所述预定阈值。
步骤S24,如果有核心的CPU占用率超过预定阈值,则拒绝与该核心对应的进程处理来自所述客户端的请求,其他进程继续处理来自所述客户端的请求,如果每个核心的CPU占用率均未超过所述预定阈值,所有用于处理客户端请求的进程继续处理来自所述客户端的请求。
具体的,可以在设立一个定时器,定时计算用于处理客户端请求的进程在每个核心的CPU占用率。进一步的,还可以建立一张进程状态表,将每次计算的CPU占用率状态记录下来。若检查到某个进程的CPU占用率超过或到达一个极限值(也就升级预定阈值)时,例如:90%、95%或100%等,则将进程状态表中该进程的状态修改为异常,并拒绝该进程处理来自客户端的请求。由于定时器时间间隔是固定的,对于某个在进程状态表中已标记为异常的进程,若检查到其CPU占用率低于规定的极限值时,则可以将进程状态表中该进程的状态修改为正常,使得该进程可以继续处理来自所述客户端的请求。
本发明实施例提供的过载保护方法,通过获取用于处理客户端请求的进程的在每个核心上的CPU占用率来衡量该进程的负载,相对于现有技术中根据请求数来控制服务器负载的方法,精确度更高,而且无需针对不同的服务器进行配置,针对各种服务器都可以实现自动化管理,无需进行手动干预。
第三实施例
图6为本发明第三实施例提供的业务请求的处理方法的流程图。结合图1,本实施例描述的是服务器的处理流程,本实施例提供的业务请求的处理方法包括以下步骤:
步骤S300,获取服务器中的CPU核心数。
步骤S301,获取当前时刻的各核心的CPU资源消耗数据total1。
步骤S302,获取经过所述预定采样周期时的各核心的CPU资源消耗数据total2。
步骤S303,根据资源消耗数据total1以及***配置的空闲时间消耗数据,计算在所述当前时刻,用于处理客户端请求的进程在各核心实际消耗的资源数据used1。
步骤S304,根据资源消耗数据total2以及***配置的空闲时间消耗数据,计算在经过所述预定采样周期时,用于处理客户端请求的进程,在各核心的实际消耗的资源数据used2。
步骤S305,利用公式P=(used2-used1)/(total2-total1)*100%,计算用于处理客户端请求的进程在各核心的CPU占用率P。
步骤S306,判断每个核心的CPU占用率是否超过所述预定阈值。
步骤S307,如果有核心的CPU占用率超过预定阈值,则拒绝与该核心对应的进程处理来自所述客户端的请求,其他进程继续处理来自所述客户端的请求,如果每个核心的CPU占用率均未超过所述预定阈值,所有用于处理客户端请求的进程继续处理来自所述客户端的请求。
下面将以Linux操作***为例,对本实施例中的过载保护方法进行更详细的说明。需要说明的是,虽然本实施例中以Linux操作***为例进行说明,但本发明的实施方式并不以具体的操作***为限,本发明各实施例中的技术方案同样适用于其他操作***。
首先,读取服务器CPU的核心数,例如,通过读取/proc/cpuinfo文件夹下的processor字段,或者cpucores字段来确定CPU的核心数。其中,processor字段用于表明CPU的最大核心编号,由于CPU的核心是由0开始编号,因此,如果读取到的processor字段为3,那么可得到CPU的核心编号为0,1,2,3,也就是说CPU的核心数为4。另外,cpucores字段用于表明CPU的核心数,如果读取到cpucores字段为4,那么可直接得到CPU的核心数为4。
假设得到CPU的核心数为4,分别用CPU0、CPU1、CPU2、CPU3来表示CPU的4个核心。
读取当前时刻的CPU资源消耗数据total1,具体的,可以通过读取/proc/stat文件中的数据来获取当前时刻的CPU资源消耗数据。在Linux***下,CPU占用率分为用户态,***态和空闲态,分别表示CPU处于用户态执行的时间,***内核执行的时间,和空闲***进程执行的时间。CPU占用率是指:CPU执行非***空闲进程的时间/CPU总的执行时间。
在Linux的内核中,有一个全局变量:Jiffies。Jiffies代表时间。它的单位随硬件平台的不同而不同。***里定义了一个常数HZ,代表每秒种最小时间间隔的数目。这样jiffies的单位就是1/HZ。Intel平台jiffies的单位是1/100秒,这就是***所能分辨的最小时间间隔了。每个CPU时间片,Jiffies都要加1。CPU的占用率就是用执行用户态+***态的Jiffies除以总的Jifffies来表示。
假设读取/proc/stat文件,所得到的CPU资源消耗数据如表1所示:
表1
col1 | col2 | col3 | col4 | col5 | col6 | col7 | col8 | |
CPU | 58881059 | 276558 | 79626046 | 39233433523 | 12364186 | 847076 | 14038754 | 0 |
CPU0 | 22740763 | 118390 | 39867589 | 9768789325 | 6115347 | 847070 | 11388298 | 0 |
CPU1 | 5773426 | 50387 | 9885799 | 9831592484 | 2241835 | 0 | 323006 | 0 |
CPU2 | 18818718 | 51212 | 14915724 | 9813169718 | 2681267 | 2 | 230148 | 0 |
CPU3 | 11548151 | 56568 | 14956931 | 9819881995 | 1325735 | 3 | 2097299 | 0 |
表1中,CPU所在行的数据表示的是总的CPU资源消耗数据,CPU0表示的是核心CPU0的CPU资源消耗数据,CPU1表示的是核心CPU1的CPU资源消耗数据,CPU2表示的是核心CPU2的CPU资源消耗数据,CPU3表示的是核心CPU3的CPU资源消耗数据。假设用total1表示当前时刻的CPU资源消耗数据(也就是CPU总的执行时间),那么,每个核心对应的CPU资源消耗数据total1可以利用公式(1)进行计算:
total1=col1+col2+col3+col4+col5+col6+col7+col8.(1)
其中,col1-col8分别表示的是该核心在第1-8列的CPU资源消耗数据,单位为jiffies。假设计算的是核心CPU0的CPU资源消耗数据,那么total1(CPU0)=
58881059+276558+79626046+39233433523+12364186+847076+14038754。
其中,col4以及col5是操作***配置的空闲时间消耗数据,也就是CPU执行***空闲进程的时间,那么,在所述当前时刻,用于处理客户端请求的进程在每个核心上实际消耗的资源数据used1可以由公式(2)进行计算:
used1=total1-col4-col5.(2)
假设计算的是在所述当前时刻,用于处理客户端请求的进程在核心CPU0上实际消耗的资源数据used1核心CPU0的CPU资源消耗数据,那么used1(CPU0)=total1(CPU0)-39233433523-12364186。
假设预定采样周期为10秒,那么在获取当前时刻的各核心的CPU资源消耗数据total1并根据资源消耗数据total1以及***配置的空闲时间消耗数据,计算用于处理客户端请求的进程,在所述当前时刻各核心上实际消耗的资源数据used1后,经过10秒,再获取CPU资源消耗数据total2。也就是说,假设当前时刻为t0,预定的采样周期为10秒,那么在t0+10的时刻,获取CPU资源消耗数据total2,并依据上述方法计算经过10秒时,用于处理客户端请求的进程在所述当前时刻各核心上实际消耗的资源数据used2,再利用公式(3)计算用于处理客户端请求的进程在每个核心上的CPU占用率P:
P=(used2-used1)/(total2-total1)*100%.(3)
计算出用于处理客户端请求的进程在每个核心上的CPU占用率P后,判断每个核心的CPU占用率是否超过所述预定阈值。假设核心CPU0的CPU占用率超过预定阈值(例如90%),则与该核心对应的用于处理客户端请求的进程拒绝处理来自所述客户端的请求,其他CPU占有率未超过预定阈值的核心CPU1,CPU2,CPU3所对应的用于处理客户端请求的进程则可以继续处理来自所述客户端的请求。
可以理解的,根据不同时长的预定采样周期,可以获取不同周期内的CPU占有率,取较短的预定采样周期(例如1秒),可以计算瞬时的CPU占有率,取较长的预定采样周期(例如10秒),可以计算平均负载,也就是可以对数据的毛刺进行削峰处理,所得到的数据更加准确。
本发明实施例提供的过载保护方法,通过获取用于处理客户端请求的进程的在每个核心上的CPU占用率来衡量该进程的负载,相对于现有技术中根据请求数来控制服务器负载的方法,精确度更高,而且无需针对不同的服务器进行配置,针对各种服务器都可以实现自动化管理,无需进行手动干预。
第四实施例
图7为本发明第四实施例提供的过载保护装置的结构框图。本实施例提供的过载保护装置可运行于服务器,可以用于上述实施例中的过载保护方法。如图7所示,过载保护装置40包括:数据获取模块41、数据处理模块42、请求处理模块43。
其中,数据获取模块41,用于获取预定采样周期内的CPU资源消耗数据;
数据处理模块42,用于计算在所述预定采样周期内,用于处理客户端请求的进程的CPU占用率;以及
请求处理模块43,用于若所述CPU占用率超过预定阈值,则拒绝所述进程处理来自所述客户端的请求,若所述CPU占用率未超过预定阈值,所述进程在下一个预定采样周期继续处理来自所述客户端的请求。
进一步的,于本发明的一具体实施方式中,所述数据获取模块41还用于分别获取当前时刻的各核心的CPU资源消耗数据total1以及经过所述预定采样周期时的CPU资源消耗数据total2。
所述数据处理模块42还用于:根据资源消耗数据total1以及***配置的空闲时间消耗数据,计算在所述当前时刻,用于处理客户端请求的进程在各核心实际消耗的资源数据used1;根据资源消耗数据total2以及***配置的空闲时间消耗数据,计算在经过所述预定采样周期时,用于处理客户端请求的进程,在各核心的实际消耗的资源数据used2;利用公式P=(used2-used1)/(total2-total1)*100%,计算用于处理客户端请求的进程在各核心的CPU占用率P。
以上各模块可以是由软件代码实现,此时,上述的各模块可存储于存储器201内,如图8所示。以上各模块同样可以由硬件例如集成电路芯片实现。
本实施例对过载保护装置40的各功能模块实现各自功能的具体过程,请参见上述图1至图6所示实施例中描述的具体内容,此处不再赘述。
本发明实施例提供的过载保护装置,通过获取用于处理客户端请求的进程的CPU占用率来衡量该进程的负载,相对于现有技术中根据请求数来控制服务器负载的方法,精确度更高,而且无需针对不同的服务器进行配置,针对各种服务器都可以实现自动化管理,无需进行手动干预。
第五实施例
图9为本发明第五实施例提供的过载保护装置的结构框图。本实施例提供的过载保护装置可运行于服务器,可以用于上述实施例中的过载保护方法。如图9所示,过载保护装置50可以包括:数据获取模块51、数据处理模块52、请求处理模块53。
与第四实施例不同的是,于本实施例中,所述数据获取模块51还用于获取服务器中的CPU核心数。当所述核心数大于或等于两个时,所述数据处理模块52还用于根据所述CPU核心数以及所述CPU资源消耗数据,计算在所述预定采样周期内,用于处理客户端请求的进程在每个核心的CPU占用率。所述请求处理模块53还用于判断每个核心的CPU占用率是否超过所述预定阈值,如果有核心的CPU占用率超过预定阈值,则拒绝与该核心对应的进程处理来自所述客户端的请求,其他进程继续处理来自所述客户端的请求。
所述数据处理模块52还包括:
进程数据获取单元521,用于根据CPU资源消耗数据,获取用于处理客户端请求的进程在每个核心的资源消耗数据;
实际消耗计算单元522,用于根据每个核心的资源消耗数据以及***配置的空闲时间消耗数据,获取每个核心的实际消耗的资源数据;
占用率计算单元523,用于计算每个核心的实际消耗的资源数据与每个核心的资源消耗数据的比值,得到用于处理客户端请求的进程在每个核心的CPU占用率。
以上各模块可以是由软件代码实现,此时,上述的各模块可存储于存储器201内。以上各模块同样可以由硬件例如集成电路芯片实现。
本实施例对过载保护装置50的各功能模块实现各自功能的具体过程,请参见上述图1至图6所示实施例中描述的具体内容,此处不再赘述。
本发明实施例提供的过载保护装置,通过获取用于处理客户端请求的进程的在每个核心上的CPU占用率来衡量该进程的负载,相对于现有技术中根据请求数来控制服务器负载的方法,精确度更高,而且无需针对不同的服务器进行配置,针对各种服务器都可以实现自动化管理,无需进行手动干预。
第六实施例
本发明第六实施例提供的服务器可以如图2所示,包括存储器以及处理器,所述存储器用于存储第四或第五实施例中的过载保护装置的模块,所述处理器用于运行存储在所述存储器内的所述过载保护装置的模块,实现对服务器的过载保护。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者装置中还存在另外的相同要素。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (9)
1.一种过载保护方法,其特征在于,包括:
获取预定采样周期内的CPU资源消耗数据;
根据CPU资源消耗数据,计算在所述预定采样周期内,用于处理客户端请求的进程的CPU占用率;以及
若所述CPU占用率超过预定阈值,则拒绝所述进程处理来自所述客户端的请求,若所述CPU占用率未超过预定阈值,所述进程在下一个预定采样周期继续处理来自所述客户端的请求。
2.根据权利要求1所述的方法,其特征在于,所述获取预定采样周期内的CPU资源消耗数据的步骤之前还包括:获取服务器中的CPU核心数,当所述核心数大于或等于两个时,所述计算在所述预定采样周期内,用于处理客户端请求的进程的CPU占用率,以及若所述CPU占用率超过预定阈值,则拒绝所述进程处理来自所述客户端的请求的步骤,包括:
根据所述CPU核心数以及所述CPU资源消耗数据,计算在所述预定采样周期内,用于处理客户端请求的进程在每个核心的CPU占用率;
当有核心的CPU占用率超过预定阈值,则拒绝与该核心对应的进程处理来自所述客户端的请求,其他进程继续处理来自所述客户端的请求。
3.根据权利要求2所述的方法,其特征在于,所述根据所述CPU核心数以及所述CPU资源消耗数据,计算在所述预定采样周期内,用于处理客户端请求的进程在每个核心的CPU占用率的步骤,包括
根据CPU资源消耗数据,获取用于处理客户端请求的进程在每个核心的资源消耗数据;
根据每个核心的资源消耗数据以及***配置的空闲时间消耗数据,获取每个核心的实际消耗的资源数据;
计算每个核心的实际消耗的资源数据与每个核心的资源消耗数据的比值,得到用于处理客户端请求的进程在每个核心的CPU占用率。
4.根据权利要求1所述的方法,其特征在于,
所述获取预定采样周期内的CPU资源消耗数据的步骤,包括:
获取当前时刻的各核心的CPU资源消耗数据total1;
获取经过所述预定采样周期时的各核心的CPU资源消耗数据total2;
所述计算在所述预定采样周期内,用于处理客户端请求的进程的CPU占用率的步骤,包括:
根据资源消耗数据total1以及***配置的空闲时间消耗数据,计算在所述当前时刻,用于处理客户端请求的进程在各核心实际消耗的资源数据used1;
根据资源消耗数据total2以及***配置的空闲时间消耗数据,计算在经过所述预定采样周期时,用于处理客户端请求的进程,在各核心的实际消耗的资源数据used2;
利用公式P=(used2-used1)/(total2-total1)*100%,计算用于处理客户端请求的进程在各核心的CPU占用率P。
5.一种过载保护装置,运行于服务器,其特征在于,包括:
数据获取模块,用于获取预定采样周期内的CPU资源消耗数据;
数据处理模块,用于根据CPU资源消耗数据,计算在所述预定采样周期内,用于处理客户端请求的进程的CPU占用率;以及
请求处理模块,用于若所述CPU占用率超过预定阈值,则拒绝所述进程处理来自所述客户端的请求,若所述CPU占用率未超过预定阈值,所述进程在下一个预定采样周期继续处理来自所述客户端的请求。
6.根据权利要求5所述的装置,其特征在于,所述数据获取模块还用于获取服务器中的CPU核心数,当所述核心数大于或等于两个时,所述数据处理模块还用于根据所述CPU核心数以及所述CPU资源消耗数据,计算在所述预定采样周期内,用于处理客户端请求的进程在每个核心的CPU占用率;所述请求处理模块还用于判断每个核心的CPU占用率是否超过所述预定阈值,当有核心的CPU占用率超过预定阈值,则拒绝与该核心对应的进程处理来自所述客户端的请求,其他进程继续处理来自所述客户端的请求。
7.根据权利要求6所述的装置,其特征在于,所述数据处理模块还包括:
进程数据获取单元,用于根据CPU资源消耗数据,获取用于处理客户端请求的进程在每个核心的资源消耗数据;
实际消耗计算单元,用于根据每个核心的资源消耗数据以及***配置的空闲时间消耗数据,获取每个核心的实际消耗的资源数据;
占用率计算单元,用于计算每个核心的实际消耗的资源数据与每个核心的资源消耗数据的比值,得到用于处理客户端请求的进程在每个核心的CPU占用率。
8.根据权利要求5所述的装置,其特征在于,
所述数据获取模块还用于分别获取当前时刻的各核心的CPU资源消耗数据total1以及经过所述预定采样周期时的CPU资源消耗数据total2;
所述数据处理模块还用于:根据资源消耗数据total1以及***配置的空闲时间消耗数据,计算在所述当前时刻,用于处理客户端请求的进程在各核心实际消耗的资源数据used1;根据资源消耗数据total2以及***配置的空闲时间消耗数据,计算在经过所述预定采样周期时,用于处理客户端请求的进程,在各核心的实际消耗的资源数据used2;利用公式P=(used2-used1)/(total2-total1)*100%,计算用于处理客户端请求的进程在各核心的CPU占用率P。
9.一种服务器,包括存储器以及处理器,其特征在于,所述存储器用于存储有如权利要求5-8中任意一项所述的过载保护装置的模块,所述处理器用于运行存储在所述存储器内的所述过载保护装置的模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410460897.6A CN105471614A (zh) | 2014-09-11 | 2014-09-11 | 过载保护方法、装置及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410460897.6A CN105471614A (zh) | 2014-09-11 | 2014-09-11 | 过载保护方法、装置及服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105471614A true CN105471614A (zh) | 2016-04-06 |
Family
ID=55608929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410460897.6A Pending CN105471614A (zh) | 2014-09-11 | 2014-09-11 | 过载保护方法、装置及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105471614A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107092526A (zh) * | 2016-11-02 | 2017-08-25 | 北京小度信息科技有限公司 | 任务处理方法及装置 |
CN107465627A (zh) * | 2017-08-11 | 2017-12-12 | 北京小度信息科技有限公司 | 过载保护方法、装置、电子设备及流量处理*** |
CN107613030A (zh) * | 2017-11-06 | 2018-01-19 | 网宿科技股份有限公司 | 一种处理业务请求的方法和*** |
CN108156091A (zh) * | 2016-12-02 | 2018-06-12 | 阿里巴巴集团控股有限公司 | 一种流量控制方法及*** |
WO2018188542A1 (zh) * | 2017-04-10 | 2018-10-18 | 平安科技(深圳)有限公司 | 计数方法、计数器及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1480878A (zh) * | 2002-09-02 | 2004-03-10 | 联想(北京)有限公司 | 获取Linux操作***信息的方法 |
WO2009129487A2 (en) * | 2008-04-17 | 2009-10-22 | Tekelec | Methods, systems, and computer readable media for session initiation protocol (sip) overload control |
CN103092738A (zh) * | 2012-12-26 | 2013-05-08 | 杭州华为数字技术有限公司 | 一种资源可视化方法及装置 |
CN103164663A (zh) * | 2011-12-12 | 2013-06-19 | 深圳市腾讯计算机***有限公司 | 一种基于滑动窗口的服务器过载保护方法及装置 |
CN103399800A (zh) * | 2013-08-07 | 2013-11-20 | 山东大学 | 基于Linux并行计算平台的动态负载均衡方法 |
CN103580922A (zh) * | 2013-11-08 | 2014-02-12 | 国家电网公司 | 一种基于混合优化的电力通信网络应用服务器过载控制方法 |
CN103581048A (zh) * | 2013-11-08 | 2014-02-12 | 国家电网公司 | 一种电力通信网络的分布式资源过载控制方法 |
CN104239193A (zh) * | 2014-09-04 | 2014-12-24 | 浪潮电子信息产业股份有限公司 | 一种基于Linux的CPU和内存使用率收集的方法 |
-
2014
- 2014-09-11 CN CN201410460897.6A patent/CN105471614A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1480878A (zh) * | 2002-09-02 | 2004-03-10 | 联想(北京)有限公司 | 获取Linux操作***信息的方法 |
WO2009129487A2 (en) * | 2008-04-17 | 2009-10-22 | Tekelec | Methods, systems, and computer readable media for session initiation protocol (sip) overload control |
CN103164663A (zh) * | 2011-12-12 | 2013-06-19 | 深圳市腾讯计算机***有限公司 | 一种基于滑动窗口的服务器过载保护方法及装置 |
CN103092738A (zh) * | 2012-12-26 | 2013-05-08 | 杭州华为数字技术有限公司 | 一种资源可视化方法及装置 |
CN103399800A (zh) * | 2013-08-07 | 2013-11-20 | 山东大学 | 基于Linux并行计算平台的动态负载均衡方法 |
CN103580922A (zh) * | 2013-11-08 | 2014-02-12 | 国家电网公司 | 一种基于混合优化的电力通信网络应用服务器过载控制方法 |
CN103581048A (zh) * | 2013-11-08 | 2014-02-12 | 国家电网公司 | 一种电力通信网络的分布式资源过载控制方法 |
CN104239193A (zh) * | 2014-09-04 | 2014-12-24 | 浪潮电子信息产业股份有限公司 | 一种基于Linux的CPU和内存使用率收集的方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107092526A (zh) * | 2016-11-02 | 2017-08-25 | 北京小度信息科技有限公司 | 任务处理方法及装置 |
CN108156091A (zh) * | 2016-12-02 | 2018-06-12 | 阿里巴巴集团控股有限公司 | 一种流量控制方法及*** |
WO2018188542A1 (zh) * | 2017-04-10 | 2018-10-18 | 平安科技(深圳)有限公司 | 计数方法、计数器及存储介质 |
CN107465627A (zh) * | 2017-08-11 | 2017-12-12 | 北京小度信息科技有限公司 | 过载保护方法、装置、电子设备及流量处理*** |
CN107613030A (zh) * | 2017-11-06 | 2018-01-19 | 网宿科技股份有限公司 | 一种处理业务请求的方法和*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105471614A (zh) | 过载保护方法、装置及服务器 | |
CN108462760B (zh) | 电子装置、集群访问域名自动生成方法及存储介质 | |
CN107679081B (zh) | 信息修改方法、装置、计算机设备及计算机可读存储介质 | |
CN107770088B (zh) | 一种流量控制方法及装置 | |
KR102060430B1 (ko) | 웨이크-업 시간을 줄일 수 있는 시스템 온 칩. 애플리케이션 프로세서, 및 상기 시스템 온 칩을 포함하는 컴퓨터 시스템 | |
US20130205149A1 (en) | Apparatus and method for dynamically adjusting frequency of central processing unit | |
US20140181596A1 (en) | Wear-out equalization techniques for multiple functional units | |
CN105656810B (zh) | 一种更新应用程序的方法及装置 | |
CN103763346A (zh) | 一种分布式资源调度方法及装置 | |
CN102822768A (zh) | 通过从处理器性能管理***掩蔽处理来减少功耗 | |
CN114257551A (zh) | 一种分布式限流的方法及***、存储介质 | |
CN105260655A (zh) | 一种应用程序启动保护的方法、装置及*** | |
CN106293805A (zh) | 程序加载的方法及装置 | |
CN111983412A (zh) | 监控***、监控方法、监控终端及存储介质 | |
CN109561134B (zh) | 电子装置、分布式集群服务分配方法及存储介质 | |
CN114253619A (zh) | SSD多级Boot的方法、装置、计算机设备及存储介质 | |
CN110399166B (zh) | ME Nonce值的保存方法、装置、设备及存储介质 | |
CN110175450B (zh) | 一种信息的处理方法、装置及设备 | |
CN110569114B (zh) | 一种业务处理方法、装置、设备及存储介质 | |
CN111159038A (zh) | 一种模拟cpu负载的方法及电子设备 | |
CN112673354B (zh) | 一种***状态检测方法、***状态装置及终端设备 | |
US20170038824A1 (en) | Method and apparatus for reducing consumption of standby power through detection of idle state of system | |
KR100763527B1 (ko) | 임베디드 리눅스 시스템에서 전력 관리 방법 및 장치 | |
US20150106601A1 (en) | Method for Automatically Adapting Application to Suitable Multicore Processing Mode and Mobile Device | |
CN111077975A (zh) | SSD降低Power State3功耗的方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160406 |