cgroup与supervisor

来源:互联网 发布:电脑操作监控软件 编辑:程序博客网 时间:2024/06/03 21:00

一、cgroup

Linux CGroup全称Linux Control Group, 是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如CPU、内存、磁盘输入输出等)。

1、安装配置:
安装cgroup yum install libcgroup
修改/etc/cgconfig.conf文件
重启cgroup service cgconfig restart

测试一:cpu限制

echo 50000 >/cgroup/cpu/foo/cpu.cfs_quota_us

echo 11840 >/cgroup/cpu/foo/tasks


 

echo 60000  > /cgroup/cpu/foo/cpu.cfs_quota_us


 

 

测试二:memory限制

 

测试代码:

x="a"

while [ True ];do

    x=$x$x

done;

结果:


 

 

mkdir -p/cgroup/memory/foo

echo 64k >/cgroup/memory/foo/memory.limit_in_bytes

echo 12153 >tasks

结果:一会上面的进程就会因为内存问题被kill掉了


 

 

I/O测试:

测试命令:从/dev/vda1上读入数据,输出到/dev/null上  sudo dd if=/dev/sda1 of=/dev/null

结果:


把读IO限制到1MB/s,并把前面那个dd命令的pid放进去(注:8:0 是设备号,你可以通过ls -l /dev/vda1获得)

 echo '8:0 1048576'  >/cgroup/blkio/foo/blkio.throttle.read_bps_device 

echo 8128 > /cgroup/blkio/footasks

 


问题集:

按照网上的做法mount cgroup时,

Umount的时候出现了如下问题:


 

查看有哪些进程在占用该目录:发现是apps用户

[root@B2C-TEST-NGINX-002apps]# fuser -cu cgroup/

cgroup/:             60306c(apps)

 

直接使用fuser 的k参数进行kill:发现另一个用apps用户打开终端被强制退出停止了

[root@B2C-TEST-NGINX-002apps]# fuser -ck cgroup/

cgroup/:             60306c

 

再次umount的时候依旧出现这个问题:

[root@B2C-TEST-NGINX-002apps]#  umount  cgroup 

umount:/home/apps/cgroup: device is busy.

        (In some cases useful info aboutprocesses that use

         the device is found by lsof(8) orfuser(1))

经过排查发现,由于目前我是通过sudo -i切换到root用户下进行操作的,我退出root用户后发现我的apps用户也在占用这个目录,导致无法umount,故,切换为apps用户,再进行umount:成功


二、supervisor

supervisor安装:

 

yum installPython-setuptools

easy_install supervisor

 

测试是否安装成功:

echo_supervisord_conf

创建配置文件:

sudosu#切换到root用户,不然提示无权限

echo_supervisord_conf> /etc/supervisord.conf

 

修改配置文件:

在supervisord.conf最后增加:

[program:nginx]

command =/usr/local/nginx/sbin/nginx

autostart=true

autorestart=true

 

运行命令:

supervisord//启动supervisor

 

supervisorctl//打开命令行

 

运行结果:







0 0
原创粉丝点击