如何使用CPULimit工具限制CentOS 7云服务器应用程序的资源使用?

  • 发布时间:2022-04-09 20:55:51
  • 阅读次数:1456

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

【全文完】

< 上一篇:如何使用iftop工具监控云服务器的网络带宽使用情况? 下一篇:如何使用nethogs工具监控云服务器的网络带宽使用情况? >