使用cpulimit限制VPS CPU的使用,防止suspend

2023-08-27 3775阅读 0评论
Kdatacenter:$17.1/月/1G内存/100GB SSD空间/1TB流量/1Gbps端口/KVM/韩国SK/直连;原生IP

前言

使用cpulimit限制VPS CPU的使用,防止suspend 第1张
(图片来源网络,侵删)

因为小内存机器往往比较便宜,可能年付就是 $5 样子,所以厂家都会限制 CPU 和 磁盘IO ,如果超过了就会被 suspend,这是随随便便的事情蛤,而且有些主机商对于 suspend 都是不给予退款的。

所以我们可以借助一些软件来限制 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 }' | tail -1`
  nid=`ps aux | awk '{ if (  > 75 ) print  }' | head -1`
  if [ "${nid}" != "" ] && [ "${nid}" != "${id}" ] ; then
    cpulimit -p ${nid} -l 75 &
    echo "[`date`] CpuLimiter run for ${nid} `ps -ef | grep ${nid} | awk '{print }' | head -1`" >> /root/cpulimit-log.log
  fi
  sleep 3
done

保存到 /root/cpulimit.sh,会自动生成日志文件 /root/cpulimit-log.log

然后将此降本添加开机启动。

设置为开机启动

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

via:https://www.mf8.biz/cpulimit-make-none-suspend/


免责声明
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明。
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所
提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何
损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在
转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并白负版权等法律责任。

手机扫描二维码访问

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,3775人围观)

还没有评论,来说两句吧...

目录[+]