在做流量站时,由于需要用到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




