通常我们都认为CPU越快越好,真的是这样吗?不尽然,高频的CPU固然能做更多的事情,但是对于消耗较小的系统,或者服务器系统而言,为了保证CPU的高效能就必须从减少平常的系统开销做起了。在本文博远电子将带给您3种linux平台下限制CPU使用率的方法,进而提高服务器的效能。
1,apache本身的限制功能(RLimitCPU)
Ray03-19-2008, 05:20 AM
The PHP test can be used to show that the problem is evident, but it is not conclusive to prove that there is no limit put in place.
The reason is that it depends on how PHP is configured on the server. If the PHP scripting engine is setup as a CGI application which is forked by Apache, then the RLimit* operatives will apply and the PHP script can prove this. If they run within httpd however, the limits would not apply to the PHP engine.
这个限制将施于Apache子服务请求衍生出的进程,而不是Apache子进程本身。这个范围包括CGI脚本和SSI执行命令,但不包括所有从Apache父进程衍生出的进程。比如说管道日志。
如果不子进程不衍生进程,或非常占资源的这个进程不属于衍生出来的进程,那不就是没办法了吗?所以呀,这个办法不行地.
2,通过系统的 ulimit命令限制资源的使用
设置文件在:
/etc/security/limits.conf
比如:
xok_la hard cpu 1
xok_la hard fsize 50000
xok_la hard memlock 1000
xok_la hard nofile 50
xok_la hard nproc 50
这种方式限制是可以的,他是基于用户来限制的,可以限制内存,CPU占用时间,打开的文件数等等.前提是你要登陆到这个系统上.如果只是以这个用户来单独运行文件的话,就不行…….所以我还是要放弃.
3,安装CPU Usage Limiter for Linux
What is it?
cpulimit is a simple program that attempts to limit the cpu usage of a process (expressed in percentage, not in cpu time). This is useful to control batch jobs, when you don't want them to eat too much cpu. It does not act on the nice value or other scheduling priority stuff, but on the real cpu usage. Also, it is able to adapt itself to the overall system load, dynamically and quickly.
可以限制程序使用CPU的百分比,而不是时间.很好,很舒服.
开始安装吧.
官方地址:http://cpulimit.sourceforge.net/
cd /root/install/
svn checkouthttps://cpulimit.svn.sourceforge.net/svnroot/cpulimit/trunk cpulimit
cd cpulimit
make
cp ./cpulimit /usr/sbin
如此简单,很愉快吧?
限制方法:
如果限制进程名,比如将httpd这个进程名的CPU限制在40%
cpulimit --exe httpd --limit 40
cpulimit --exe /usr/local/bin/httpd --limit 40
将pid为2960的进程的CPU限制在55%
cpulimit --pid 2960 --limit 55
慢慢对比top 命令那里的CPU变化.嘿嘿,有效果了吧?.
再来个完美的
自动限制当前进程使用CPU超过20%的进程,将他限制为10%
cpulimit --pid `ps aux|awk '{if($3 > 20) print $2}'` --limit 10
cpulimit命令:
Error: You must specify a target process, by name or by PID
Usage: cpulimit TARGET [OPTIONS...]
TARGET must be exactly one of these:
-p, --pid=N pid of the process (implies -z)
-e, --exe=FILE name of the executable program file or absolute path name
OPTIONS
-l, --limit=N percentage of cpu allowed from 0 to 100 (required)
-v, --verbose show control statistics
-z, --lazy exit if there is no suitable target process, or if it dies
-h, --help display this help and exit
来源:博远电子(软件定制),如涉及版权问题请与我们联系。
TAG
软件定制,软件开发,瀚森HANSEN,辽宁,沈阳,抚顺