我有一些使用大量cpu的脚本是否可以限制允许进程使用的cpu数量?顺便说一下,我在CentOs 5.5上运行。
答案 0 :(得分:10)
也许你可以使用nice?
答案 1 :(得分:10)
我帮助一位PHP编码人员创建PHP脚本来解决类似的问题。这些是长期运行的PHP脚本,会产生大量负载。由于它们长期运行,目标是在负载过高时“暂停”它们。该脚本的功能类似于:
function get_server_load()
{
$fh = fopen('/proc/loadavg', 'r')
$data = fread($fh, 6);
fclose($fh);
$load_avg = explode(" ", $data);
return floatval(trim($load_avg[0]));
}
脚本在每个循环中调用get_server_load()
,如果负载大于给定的最大值,它会休眠30秒并再次检查:
set_time_limit(120);
while(get_server_load() > $max_load)
sleep($load_sleep_time);
这允许脚本在高负载期间将CPU时间返回给服务器。
答案 2 :(得分:-2)
PHP被认为是一种脚本语言,并且没有对硬件的低级访问权限。
相反,你可以做的是使用像“set_time_limit()”
这样的函数http://php.net/manual/en/function.set-time-limit.php
php.ini中的和memory_limit
http://php.net/manual/en/ini.core.php
这些是推荐的方法,但是你最接近你想要的方法可能是“sleep()”的组合
http://php.net/manual/en/function.sleep.php
并使用“exec('uptime');”获取当前CPU负载。请注意,您可能有也可能无法访问这些系统命令。