或使用cpulimit,参考教程: CPULimit 限制 Linux 程式 CPU 使用率教学 - G. T. Wang (gtwang.org)
例如,将PID限制使用率为1000%(每个核提供100%): cpulimit -p PID -l 1000
或利用循环,限制多个进程:
如果想取消cpulimit的话:
而占用CPU过高则让其他用户无法忍受,而其很有可能是用户程序有问题,这个时候系统应该自动阻止这样的进程继续消耗系统资源。 最简单的方法就是通过ps发现CPU占用率超过某个限制的用户进程,然后将该进程杀死,这种做法很暴力,而且用户发现他的进程被杀以后很可能又启动进程,这样恶性循环。 有一种折中的方法,不是将目标进程杀死,而是适当调整其nice值,具体见如下shell程序: renice +10 `ps aux | awk '{ if ($3 >0.8 &&id -u $1 >500) print $2}'` (责任编辑:云子)下面的shell脚本可以实时的监控系统中各个进程的CPU和内存的占用情况,用于限制进程CPU占用 率更加合理。
#!/bin/shPIDS=`top -bn 1 | grep "^ *[1-9]" | awk ’{ if($9 > 50 || $10 > 25 && id -u $2 > 500) print $1}’`
for PID in $PIDS
do
renice +10 $PID
echo "renice +10 $PID"
done
能够将这个脚本放到cron中运行,比如每分钟检查一次,只需以root身份添加crontab项:
#crontab -e
* * * * * limit.sh
以后每个一分钟就会检查一次,调整占用50%以上CPU或25%内存的进程的nice值,从而使这样的进程优先级变低,被调度的机会减少,同时会向root发邮件提示该进程被调整过。
但是,限制内存使用最好还是用PAM,RedHat能够在/etc/security/limits.conf中配置。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)