CPULimit是一款Linux操作系统下用于限制应用程序资源使用的工具。这款工具适用于我们需要阻止某个应用程序消耗大量资源,造成其他应用程序变慢的情况。CPULimit也许并不适合所有的应用程序,因为它会间隔一段时间启动或停止应用程序所在的进程。比如,CPULimit不适合任务功控制类的应用程序,因为CPULimit会发送停止进程的信号,这样会造成应用程序多次的启动和停止。不过对于Web应用程序,如PHP、Java等,CPULimit都是适用的。下面以一台安装CentOS 7操作系统的云服务器为例,介绍CPULimit的安装和使用方法。
下载CPULimit压缩包并解压。
cd ~
wget https://astuteinternet.dl.sourceforge.net/project/limitcpu/limitcpu/cpulimit-2.5.tar.gz
tar -xvf cpulimit-2.5.tar.gz
解压完成后,使用编译安装方式安装,等待安装完成。
cd cpulimit-2.5
make
make install
在使用CPULimit之前,我们需要查出需要限制的进程编号,也就是PID,可以通过top命令查看。
$ top -c
Tasks: 130 total, 1 running, 129 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.0 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3881740 total, 191952 free, 413472 used, 3276316 buff/cache
KiB Swap: 4063228 total, 4062912 free, 316 used. 2881364 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1336 plex 35 15 1368172 67464 6668 S 0.3 1.7 155:41.58 Plex Plug-in [com.plexapp.system] /usr/lib/plexmediaserver/Resources/Plug-ins-995f1dead+
31345 root 20 0 326572 21844 12784 S 0.3 0.6 86:45.32 docker-containerd --config /var/run/docker/containerd/containerd.toml
1 root 20 0 193704 6744 4088 S 0.0 0.2 6:49.22 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
2 root 20 0 0 0 0 S 0.0 0.0 0:01.45 [kthreadd]
3 root 20 0 0 0 0 S 0.0 0.0 0:12.77 [ksoftirqd/0]
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 [kworker/0:0H]
7 root rt 0 0 0 0 S 0.0 0.0 0:13.95 [migration/0]
比如我们想限制plex,那么对应的PID就是1336。假如我们想限制plex不超过CPU的15%,执行以下两条命令。
screen -S limitcpu
cpulimit -p 1336 -l 15
其中screen -S为CPULimit创建了一个新的终端,确保终端关闭后仍然可以继续运行。下次登录系统后,要切换到这个终端,只需执行下面的命令。
screen -r limitcpu
卸载CPULimit也很简单,命令如下。
cd ~/cpulimit-2.5
make deinstall