在做流量站时,由于需要用到FireFox来挂,但容易碰到FLASH或一些JS脚本导致浏览器进程的CPU使用率长期达到100%或更高,这容易被VPS提供商以滥用的的“罪名”给Suspended了,这不是VPS提供商和我们所愿意看到的。
Cpulimit是一款用于控制CPU使用率的工具,我们可以通过cpulimit来限制。
一、安装cpulimit
使用源码安装:
1 2 3 4 5 6 7 |
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* |
对于Debian/Ubuntu用户,可以使用apt-get更方便更快捷的安装:
1 2 |
apt-get update apt-get install cpulimit |
二、cpulimit的用法
限制firefox使用30% cpu利用率
# cpulimit -e firefox -l 30
限制进程号1313的程序使用30% cpu利用率
# cpulimit -p 1313 -l 30
根据进程名找出pid的方法
# ps aux | less
# ps aux | grep firefox
# pgrep -u vivek php-cgi
# pgrep lighttpd
可以使用绝对路径限制进程的cpu利用率
# cpulimit -P /opt/firefox/firebox -l 30
单核cpu和多核cpu
单核cpu的使用率范围为0%-100%,四核cpu的使用率范围为0%-400%.
三、使用脚本自动控制进程CPU使用率
这里介绍的是一套用它来自动控制CPU使用率的脚本,它可以用于防止CPU超载,也可以用黑名单/白名单的方法对某些特殊应用放行,对于服务器是一套有用的工具。
首先安装 cpulimit 和 gawk
1 |
apt-get install cpulimit gawk |
通过命令下载脚本
1 2 |
wget http://ahao.me/dl/sh/cpulimit_daemon.sh wget http://ahao.me/dl/sh/cpulimit |
下载 cpulimit_daemon.sh 和 cpulimit 两个文件。可用编辑器修改实现自定义配置,如下图:
红框部分:
CPU_LIMIT:这是每个程序能使用的最大CPU资源。默认值为 20%。
DAEMON_INTERVAL:这是脚本检查CPU情况的间隔时间,默认值为3秒。
BLACKPROCESSLIST:这是指定只监视某些特定进程时用的黑名单。有多个进程的话,可以用 “|” 隔开。 例如:”mysql|firefox|gedit”。
WHITEPROCESSESLIST:这是指定某些特定进程不用监视时用的白名单,用法同上。
注意: 黑名单和白名单至少要有一个为空白,不能同时使用这两者。
脚本的安装:
将 cpulimit_daemon.sh 文件拷贝至 /usr/bin/ 并修改其访问权限。
1 2 |
cp cpulimit_daemon.sh /usr/bin chmod 700 /usr/bin/cpulimit_daemon.sh |
将 cpulimit 文件拷贝至 /etc/init.d/ 并修改其访问权限并使其开机自启动。
1 2 3 |
cp cpulimit /etc/init.d/ chown root:root /etc/init.d/cpulimit chmod +x /etc/init.d/cpulimit |
加入开机启动,重启系统,守护进程会自动启动。
1 |
update-rc.d cpulimit defaults |
可以在终端中查看和控制状态:
1 |
service cpulimit status |
检查守护进程是否已启动。 如果没有,用以下命令启动。
1 |
service cpulimit start |
相反可以用以下命令终止:
1 |
service cpulimit stop |
四、cpulimit、gawk和脚本的卸载
卸载可参考以下步骤:
1、停止守护进程
1 |
service cpulimit stop # 会终止 cpulimit 守护进程和一切受 cpulimit 控制的进程 |
2、移除开机自启动
1 |
update-rc.d -f cpulimit remove # 移除符号链接 |
3、删除自启动脚本
1 |
rm /etc/init.d/cpulimit |
4、删除 cpulimit daemon 文件
1 |
rm /usr/bin/cpulimit_daemon.sh |
5、卸载 cpulimit 程序
1 |
apt-get remove cpulimit |
删除 gawk 与否看情况。
1 |
apt-get remove gawk |
脚本部分的原文来自:http://maketecheasier.com/limit-cpu-usage-of-any-process-in-linux/2010/09/22