最近使用Nginx服务器测试 pagespeed 的加速效果时,发现这货会造成 CPU 占用过高,Nginx 经常 100%,尽管使用的是静态缓存,总是触发主机商的CPU占用上限,不停的被强制关机。发现 CPULimit 这款工具刚好可以解决这个问题,便在此记录一下 CentOS 6 下 CPULimit 的安装和使用过程。其实也可以使用 nice
管理进程的优先级也能达到类似的效果。
项目地址 https://github.com/opsengine/cpulimit
参数介绍
先了解一下 cpulimit 的参数:
[root@bruce ~]# cpulimit -h
Usage: cpulimit [OPTIONS...] TARGET
OPTIONS
-l, --limit=N percentage of cpu allowed from 0 to 200 (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) //限制某一条命令执行的cup占用
开始安装
Linux / OS X 系统,执行:
cd /tmp
wget https://github.com/opsengine/cpulimit/archive/v0.2.zip
unzip v0.2.zip
cd cpulimit-0.2
make
cp src/cpulimit /usr/bin
安装完成!
使用方法
1、根据进程ID限制
cpulimit -p 1234 -l 40
指限制 pid 为1234的进程,最高只能使用40%的cpu用率。
2、根据进程路径限制
cpulimit -e /usr/local/nginx-1.4.1/sbin/nginx -l 50
指限制 nginx 程序最高只能使用50%的cpu用率。
3、限制某一条命令执行的cup占用
cpulimit -l 60 unzip 5555.zip
指限制解压 5555.zip 这个进程的cpu占用上限值为 60%
注意事项
-l
后面限制的cpu使用量,要根据实际的核心数量而成倍减少。比如上文中的进程1234,40%的限制生效在1核服务器中,如果是双核服务器,则应该限制到20%,四核服务器限制到10%以此类推。- root 用户可以限制所有的进程,普通用户只能限制自己有权限管理的进程。
- 通过某一条命令执行限制cup占用的,请注意
cpulimit
只针对单个进程进行限制。若命令包含两个进程则无效。
最后
除了 cpulimit
其实我们还可以通过 nice
命令工具实现合理化使用系统资源的目的。
相关推荐
- ngx_waf:一款高大全的 Nginx 网站防火墙模块
- Typecho 启用 Service Workers 浏览器缓存加速首屏访问
- LNMP 编译安装 ngx_pagespeed 模块给网站提速!
- Ubuntu/Debian 系统安装配置 UFW 简单防火墙
- CentOS 7 安装使用 iptables 防火墙方法介绍
- Linux 服务器配置密钥实现远程免密登录
文章作者:喵斯基部落
原文地址:https://www.moewah.com/archives/9.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。非商业转载及引用请注明出处(作者、原文链接),商业转载请联系作者获得授权。
我是CentOS Linux 7.4.1708 (Core)系统,单核1G,安装的宝塔面板,最近做视频站,用到ffmpeg对视频的转码和切片,导致服务器负载100%,CPU达到90%做油,想用CPUlimit来限制ffmpeg进程为20%的CPU使用率,我分别使用了cpulimit –e ffmpeg –l 20和cpulimit –e /www/wwwroot/站点/assets/import/ffmpeg/ffmpeg –20,然后通过top命令查看,CPU还是在80%以上,貌似没有效果啊,请问一下,是我哪里出了问题么?
你先查看下CPU占用最高的进程的PID,然后使用cpulimit命令限制看看,但视频转码切片对硬件要求比较高的,实际上效果并不好。