所属分类: 云计算&大数据 整理: FengNet.Com 更新日期:2017/1/24 9:46:39 阅读次数:288

老司机教你用 cpulimit 防止 CPU 过载而翻车


前言


开车了,开车了,论如何使用 cpulimit 防止老司机在 ECS 上翻车。

很多朋友如果只是购买的单核心实例,如果跑的 MYSQL 过载了或者遭遇一些逻辑缺陷的软件造成 CPU 过载和服务器假死,导致网站打不开或者 502 错误啥的。所以我们可以借助一些软件来限制 CPU 的使用率和 IO。 还有千万不要用跑分软件跑分,不然准翻车。

安装


cpulimit 就是一款可以对 CPU 使用率进行控制的软件。

包安装

Centos:
复制代码

yum install cpulimit



Debian/Ubuntu
复制代码

apt-get install cpulimit



编译安装
复制代码

cd /tmp
wget http://downloads.sourceforge.net/cpulimit/cpulimit-1.1.tar.gz
tar cpulimit-1.1.tar.gz
cd cpulimit-1.1
make
cp cpulimit /usr/local/sbin/
rm -rf cpulimit*



使用



说明

复制代码

cpulimit -h
Usage: cpulimit [OPTIONS...] TARGET
OPTIONS
-l, --limit=N percentage of cpu allowed from 0 to 100 (required)//cpu限制的百分比
-v, --verbose show control statistics//显示版本号
-z, --lazy exit if there is no target process, or if it dies//如果限制的进程不存在了,则退出。
-i, --include-children limit also the children processes//包括子进程。
-h, --help display this help and exit //帮助,显示参数
TARGET must be exactly one of these:
-p, --pid=N pid of the process (implies -z) //进程的pid
-e, --exe=FILE name of the executable program file or path name //可执行程序
COMMAND [ARGS] run this command and limit it (implies -z)




用法


限制firefox使用30% cpu 利用率
复制代码

cpulimit -e firefox -l 30


限制进程号1313的程序使用30% cpu 利用率
复制代码

cpulimit -p 1313 -l 30


限制绝对路径下该软件的 cpu 利用率
复制代码


cpulimit -e /usr/local/nginx/sbin/nginx -l 50




注意事项

-l后面限制的cpu使用量,要根据实际的核心数量而成倍减少。40%的限制生效在1核服务器中,如果是双核服务器,则应该限制到20%,四核服务器限制到10%以此类推。
root用户可以限制所有的进程,普通用户只能限制自己有权限管理的进程。



限制所有进程的 CPU 使用率


默认情况下 cpulimit 只能对已经存在的进程进行限制,但是设置此脚本为随机自启动即可(设置方法参看上面的脚本链接中),它会对所有进程(包括新建进程)进行监控并限制(3秒检测一次,CPU限制为75%)


这就可以防止因为 CPU 使用率过高而被 suspend 了!
复制代码

#!/bin/bash
while true ; do
id=`ps -ef | grep cpulimit | grep -v "grep" | awk {print $10} | tail -1`
nid=`ps aux | awk { if ( $3 > 75 ) print $2 } | head -1`
if [ "${nid}" != "" ] && [ "${nid}" != "${id}" ] ; then
cpulimit -p ${nid} -l 75 &
echo "[`date`] CpuLimiter run for ${nid} `ps -ef | grep ${nid} | awk {print $8} | head -1`" >> /root/cpulimit-log.log
fi
sleep 3
done






保存到 /root/cpulimit.sh,会自动生成日志文件 /root/cpulimit-log.log
然后将此降本添加开机启动。


设置为开机启动


修改 /etc/rc.local 在对应位置加入 /root/cpulimit.sh 再重启系统,就会全程限制各个进程的 CPU 使用了!


--------------------------------------------------------------------------------

相关文章
压力测试软件 Siege 的正确用法 2012/3/19 21:47:57
Siege:压力模拟/测试工具 2012/3/19 21:46:38
思科IOS文件管理命令 2009/3/13 21:15:53
Cisco路由器IOS系统升级方法总结 2007/11/19 13:53:18
Linux 下实现网卡高可用性的几种方法 2007/5/28 17:42:06
Linux软件安装之RPM的安装技巧 2007/5/17 10:49:56
Cisco IOS Cookbook 中文精简版第一章路由器配置和文件管理 2007/3/28 8:53:46
论广播风暴的成因、预防及排障 2006/11/14 8:23:37
核心网络设备配置及参数如何备份 2006/8/8 18:53:00
ASA 5520配置例子 2006/7/14 9:47:04
Cisco路由器故障诊断技术(重新编辑) 2006/7/14 9:42:38
路由器默认密码 2006/6/28 23:05:49
第2章 MPLS配置 2006/6/3 12:44:35
chroot bind on RedHat9 安裝實錄 2006/5/29 11:10:16
NetFlow交换及其在网络管理中的应用 2006/5/28 17:22:00
Cisco IOS进程调试 2005/11/26 20:15:38
Configuring Dynamic VLANs 2005/11/24 14:05:15
在RedHat9上构建小型的入侵检测系统 2005/9/20 14:14:17
[网工]ATM技术在计算机通信网中的应用 2005/7/6 20:59:29
show controller e1(带注释) 2004/8/29 12:32:50
CCNA专业词汇全集 2004/8/10 7:50:25
CISCO网络安全 2004/7/26 8:42:25
常用网络缩略语 2004/5/27 14:07:37
Cisco路由器故障诊断技术 2004/5/26 14:16:19
Port Reporter 工具的可用性和说明 2004/5/13 7:52:22
网络端口及其详解分页 2004/2/17 9:03:12
如何升级软件 图像在Catalyst 交换机第三层模块 2004/2/4 8:27:28
Cisco路由器故障诊断技术 2003/12/2 10:37:30
switch命令大全 2003/11/25 9:06:50
Switching 命令大全 2003/10/13 17:59:51
【FAQ】RPM软件包使用常见问题 2003/9/17 8:35:09
CISCO 技术大集合 2003/9/8 7:46:34
SSH实现Cisco路由器登录 2003/9/8 7:39:57
理解Linux系统的日志 2003/8/27 13:41:13
网络词汇大全 2003/7/31 8:45:22
构建小型的入侵检测系统(RedHat9) 2003/7/30 16:50:32
CISCO配置命令大全 2003/7/28 17:58:33
Switching 命令大全-转 2003/7/13 19:06:01
[精华手册]CISCO路由器配置手册 2003/7/13 19:01:40
完美安装mplayer手册 2003/6/27 8:16:55
iptables的状态检测机制 2003/5/22 10:40:37
Linux 的 常 用 网 络 命 令 2003/5/5 13:30:14
rpm使用技巧 2003/3/25 10:06:33
理解Linux系统的日志 2003/2/22 14:34:13


感性空间
设计&运维
网络技术
休闲娱乐
NetFilter
linux&Unix
网络安全
程序空间
软件考试
RFC&ISO
规划&规范
虚拟&存储
Apple技巧
云计算&大数据



文章搜索



站内搜索