centos7限制cpu使用_Linux系统进程CPU使用率限制脚本

一、背景

近日在客户系统运维中发现,有系统在定时脚本执行期间会将Linux系统CPU利用率跑满,导致其他服务受到影响,故查阅资料发现有大神写的CPU利用率限制程序。

地址:CPU Usage Limiter for Linux

根据此编写脚本,配合定时任务放置在服务器上,达到限制程序CPU情况,可根据自己系统CPU核心数进行参数配置,会记录CPU超过阀值的日志,可供后期进行查看分析。

二、脚本

#!/bin/bash

# auth:kaliarch

# func:sys info check

# version:v1.0

# sys:centos6.x/7.x

set -e

[ $(id -u) -gt 0 ] && exit 1

# cpu使用超过百分之多少进行限制

PEC_CPU=80

# 限制进程使用百分之多少,如果程序为多线程,单个cpu限制为85,如果为多核心,就需要按照比例写,例如cpu为2c,像限制多线程占比80%,就写170

LIMIT_CPU=85

# 日志

LOG_DIR=/var/log/cpulimit/

# 超过阀值进程pid

PIDARG=$(ps -aux |awk -v CPU=${PEC_CPU} '{if($3 > CPU) print $2}')

CPULIMITCMD=$(which cpulimit)

install_cpulimit() {

[ ! -d /tmp ] && mkdir /tmp || cd /tmp

wget -c https://github.com/opsengine/cpulimit/archive/v0.2.tar.gz

tar -zxf v0.2.tar.gz

cd cpulimit-0.2 && make

[ $? -eq 0 ] && cp src/cpulimit /usr/bin/

}

do_cpulimit() {

[ ! -d ${LOG_DIR} ] && mkdir -p ${LOG_DIR}

for i in ${PIDARG};

do

MSG=$(ps -aux |awk -v pid=$i '{if($2 == pid) print $0}')

echo ${MSG}

[ ! -d /tmp ] && mkdir /tmp || cd /tmp

nohup ${CPULIMITCMD} -p $i -l ${LIMIT_CPU} &

echo "$(date) -- ${MSG}" >> ${LOG_DIR}$(date +%F).log

done

}

main() {

hash cpulimit

if [ $? -eq 0 ];then

do_cpulimit

else

install_cpulimit && do_cpulimit

fi

}

main

三、测试

3.1 测试脚本

为配合测试利用python编写测试脚本来将CPU跑满

#!/bin/env python

import math

import random

a=10000

b=10000

c=10000

sum=0

for i in range(0,a):

for j in range(0,b):

randomfloat=random.uniform(1,10)

randompow=random.uniform(1,10)

sum+=math.pow(randomfloat, randompow)

print "sum is %s" % sum

制作定时任务

3.2 运行脚本

脚本本身本身只使用了一个核心,跑了两个测试脚本,将CPU跑到100%

3.3 查看进程

查看已经有两个cpulimt进对测试程序进行了CPU使用率限制

3.4 查看日志

记录下了cpulimit限制时刻的日志

3.5 查看CPU利用率

查看cpu利用率已经限制到了85%

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431957.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LPC1768的SPI通讯

SPI是一种全双工串行接口,可处理多个连接到指定总线上的主机和从机。在数据传输过程中总线上只能有一个主机和一个从机通信。在数据传输中,主机总是会向从机发送一帧8到16个位的数据,而从机也总会向主机发送一帧字节数据 使用代码如下 void S…

python 项目实战视频_腾讯视频 Python 爬虫项目实战

做了一些小项目,用的技术和技巧会比较散比较杂,写一个小品文记录一下,帮助熟悉。需求:经常在腾讯视频上看电影,在影片库里有一个"豆瓣好评"板块。我一般会在这个条目下面挑电影。但是电影很多,又…

Java中文乱码问题(转)

解决JSP中文乱码问题 大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着大家,现把JSP开发中遇到的中文乱码的问题及解决办法写出来供大家参考。首先了解一下Java中文问题的由来: Java的内核和class文件是基于unicode的…

文本显示变量_几千个IO状态显示.十几分钟搞定实例

工程上常会在一个或者数个界面中对所有IO点监控,很多小伙伴用一一映射的传统方法来实现,在超小型项目中实用性较强,在稍微大一点的项目中实现起来效率低还经常出错。本文旨在分享有价值的实际经验,供小伙伴们参考。在实现监控前要…

贷款购房 房贷 每月还款额是如何计算出来的? 每月还款额计算步骤/方法

http://jingyan.baidu.com/m/article/0eb457e55f23fc03f1a905e5.html购房和贷款是每个普通百姓都关心的事情。贷款购房最基本的问题当然是琢磨贷款、还贷以及还贷年限与自己每月的那点“杯水车薪”收入之间的关系,怎样让它们门当户对起来,如何对着一张载…

wordl流程图怎么写字_DLG的制作流程图

1)影像自适应预处理及几何成像模型参数计算 对原始影像进行增强处理。 根据卫星影像的各种资料构建其几何成像模型。2)像控点及加密点量测 像控点的像方量测。将外业提供的控制点进行量测,点位的量测精度应尽量达到子像素级。 在卫星影像重叠和覆盖范围内量测一定数…

TabBarController创建及使用方法简介

TabBarController创建及使用方法简介 大致讲解一下TabBarController的创建过程: 首先,我们需要一些视图,如创建UIControllerView类型的view1,view2,view3. 然后,我们需要创建 一个UITabBarController类型的…

python操作sqlite3 导入csv文件_[转载]SQLite 3导入导出成txt或csv操作

平时使用官方提供的sqlite3.exe工具来操作 sqlite的数据库,可以在网上下到。进入管理:sqlite3.exe d:\\test.db //假设数据是 d:\\test.db>.databases //显示所有数据库 和 mysql的 showdatabases;>.tables //显示当前数据库的表格 和 mysql 的show tables…

android人脸识别的背景图_Android 图片人脸识别剪切

场景在开发中我们经常需要对图片以人脸为中心进行剪切并显示,这时就需要下面这个工具了。实现效果实现效果项目参考及引用项目使用将下载的jar 和 .so 文件加入到项目中。API 说明在项目中使用如下API即可:CImageView这是一个继承ImageView的图片控件&am…

华为gre隧道全部跑静态路由

最终实现: 1、pc1能用nat上网ping能pc3 2、pc1能通过gre访问pc2 3、全部用静态路由做,没有用ospf,如果要用ospf,那么两边除了路由器上跑ospf,核心交换机也得用ospf r2配置: acl number 3000 rule 5 deny…

数组与串,串的实现,KMP,BF算法

数组是一种常用的数据结构,高级语言头提供了支持数组的基本操作,而且数组也是构成其他数据结构的重要组成。 数组是N个相同元素的构成的占用一块地址连续的内存单元的有限序列。 数组的任一个元素都可以用在数组的位置来表示。 数组与线性表区别&#xf…

libsvm python_LibSVM for Python 使用

经历手写SVM的惨烈教训(还是太年轻)之后,我决定使用工具箱/第三方库PythonLibSVM是开源的SVM实现,支持C, C, Java,Python , R 和 Matlab 等, 这里选择使用Python版本。安装LibSVM将LibSVM仓库的所有内容放入…

结对开发——求最大值

一、题目: 返回一个整数数组中最大子数组的和。 要求: 1.输入一个整形数组,数组里有正数也有负数。 2.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 3.求所有子数组的和的最大值。要求时间复杂度为O(n)。 二…

浏览器获取设备信息_一条命令获取 IE 浏览器保存网站的账号和密码信息

渗透攻击红队一个专注于红队攻击的公众号大家好,这里是 渗透攻击红队 的第 41 篇文章,本公众号会记录一些我学习红队攻击的复现笔记(由浅到深),不出意外每天一更Powershell内网渗透一直以来都是一个热门话题,试想在一个大型的内网…

__bridge,__bridge_retained,__bridge_transfer

最近遇到类型转换需要添加__bridge等开始不是很理解,后面查询资料才知道在CFObject 与 NSObject 之间转换时,ARC是不能管理Core Foundation object的生命周期。 在CFObject 与 NSObject 之间转换时,需要用到__bridge,__bridge_retained,__bri…

thinkphp5 判断数据是否存在_ThinkPHP 5.1 中间件中判断要访问的操作是否存在

ThinkPHP 5.1 中间件中判断要访问的操作是否存在ifu25 • 2021 年 01 月 15 日按惯例还是吐槽 ThinkPHP 官方社区极度不友好,提问基本得不到答案,更很少有官方人员回复。ThinPHP 5.1 中间件判断 action 是否存在中间件public function handle($request, …

NodeJS 学习记录

一、环境 1. 操作系统:win7, 32位 2. nodejs版本:v0.12.0 3. npm版本:2.5.1 二、问题 1. npm安装镜像源问题 国外镜像源很慢,国内出名且公开的有淘宝,也有内部未公开的,比如我所在的公司 示例: …

(转) 一步一步学习ASP.NET 5 (四)- ASP.NET MVC 6四大特性

转发:微软MVP 卢建晖 的文章,希望对大家有帮助。原文:http://blog.csdn.net/kinfey/article/details/44459625 编者语 : 昨晚写好的文章居然csdn不审核,这个也难怪人,但自己比较忙没办法。分享继续&#xf…

mysql sql执行过程_MySQL探秘(二):SQL语句执行过程详解

昔日庖丁解牛,未见全牛,所赖者是其对牛内部骨架结构的了解,对于MySQL亦是如此,只有更加全面地了解SQL语句执行的每个过程,才能更好的进行SQL的设计和优化。 当希望MySQL能够以更高的性能运行查询时,最好的办…

Java——容器(泛型)

【泛型】 起因&#xff1a;JDK1.4之前类型不明确<1>装入集合的类型都被当做Object对待&#xff0c;从而失去自己的实际类型。<2>从集合中取出时往往需要转型&#xff0c;效率低&#xff0c;且很容易出错。解决办法&#xff1a;<1>在定义集合的时候同时定义集…