centos7中进行资源限制,使用的仍然是cgroup,只是配置接口使用的systemd。

下文将介绍如何使用systemd进行资源限制。

Step1 编写unit文件

命令为my-demo.service

整个文件如下:

[Unit]
Description=My-demo Service [Service]
Type=simple
User=orange
ExecStart=/bin/bash /home/orange/test.sh MemoryAccounting=true
MemoryLimit=200M [Install]
WantedBy=multi-user.target
  • 关于Type的定义

    • simple 默认类型,这是最简单的服务类型。意思就是说启动的程序就是主体程序,这个程序要是退出那么一切都退出。
    • forking 标准Unix Daemon 使用的启动方式。启动程序后会调用 fork() 函数,父进程退出,留下变成Deamon精灵的子进程。
    • oneshot 表示服务类型就是启动,执行完成后,没进程存在。
  • User字段表示指定用户启动程序。

  • MemoryLimit字段表示限制服务的物理内存占用,如果超过会被系统自动Kill。

另外,test.sh的脚本定义如下,作用是耗内存:

#!/bin/bash

tmp="a"

while [ True ]
do
tmp=$tmp$tmp
done

Step2 将上述的文件拷贝到/usr/lib/systemd/system/目录下

# cp my-demo.service /usr/lib/systemd/system/

Step4 配置开机启动

# systemctl enable my-demo.service
ln -s'/usr/lib/systemd/system/my-demo.service' '/etc/systemd/system/multi-user.target.wants/my-demo.service'

输出表明,注册的过程实际上就是将服务链接到/etc/systemd/system/目录下。

Step5 测试

启动服务

# systemctl start my-demo.service

查看服务是否已经启动

# systemctl status my-demo.service

查看进程占用内存

# top

可以看到内存占用在上升,大约不到1分钟,就会看到进程由于内存超出限制而被Kill。

可以在/var/log/message中看到被Kill的记录。

参考

https://wizardforcel.gitbooks.io/vbird-linux-basic-4e/content/150.html

https://blog.csdn.net/fu_wayne/article/details/38018825

centos7 使用cgroup进行资源限制的更多相关文章

  1. docker: 解决centos7下cgroup.procs: no such device的错误

    在centos7下,运行docker run的时候会发生cgroup.procs: no such device的错误,解决方法是编辑 /lib/systemd/system/docker.servi ...

  2. cgroup实践-资源控制

    1.Cgroup安装 安装Cgroups需要libcap-devel和libcgroup两个相关的包 yum install gcc libcap-devel 2.Cgroup挂载配置 Cgroup对 ...

  3. centos cgroup配置

    centOS 6:1. 启用cgroup    查看内核是否支持cgroup功能:cat /boot/config-`uname -r` | grep -i rt_group    查看支持的子系统: ...

  4. centos7系统启动流程

    前提:pc主机,MBR架构 第一步:post(power on system test)加电自检. pc机的主板上有个rom芯片(CMOS),加电后,cpu去找这个raw,然后读取里面的指令,检测机器 ...

  5. Centos7安装Oracle12c

    环境: CentOS7@VMware12,分配资源:CPU:2颗,内存:4GB,硬盘空间:30GB Oracle12C企业版64位 过程纪要: root身份安装依赖包: compat-libstdc+ ...

  6. linux的cgroup控制

    cgroup:control group-控制群组:将用户(的进程)加入某个群组(又叫控制器controller), 通过 指定群组对资源-cpu 内存 network等的使用,来限制用户对计算机资源 ...

  7. Docker资源限制与Cgroups

    一.Linux control groups 简介     Linux CGroup全称Linux Control Group, 是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如 ...

  8. 《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #12 使用Memory Cgroup限制内存使用量

    HACK #12 使用Memory Cgroup限制内存使用量 Memory Cgroup是Cgroup的资源限制功能之一,可以控制特定进程可以使用的内存量.Memory CgroupMemory C ...

  9. CGROUP相关知识

    安装 CentOS 6 yum install libcgroup CentOS 7 yum install libcgroup-tools 使用 默认情况下有几个控制器可以进行限制,分别是 cpus ...

随机推荐

  1. PHP ueditor编辑器使用(TP5)

    百度搜索ueditor,下载,解压,把需要的JS文件放到对应的目录里,根据框架的不同目录也不一样 在文件中引入需要的JS文件 HTML代码 <div> <!-- 编辑器 --> ...

  2. encodeURI和encodeURIComponent区别

    参考:https://www.jianshu.com/p/075f5567c9a1 这两个函数功能上面比较接近,但是有一些区别. encodeURI:不会进行编码的字符有82个 :!,#,$,& ...

  3. SQL注入之Sqli-labs系列第九关和第十关(基于时间盲注的注入)

    开始挑战第九关(Blind- Time based- Single Quotes- String)和第十关( Blind- Time based- Double Quotes- String) gog ...

  4. phpcms pc_base::load

    //数据库pc_base::load_model(‘*_model’) 加载数据库模型 (一张表对应一个数据库模型类),即 modle/*_model.class.php每一个数据库模型类都会继承底层 ...

  5. socket 映射服务器程序

    server #include <stdio.h> #include <sys/types.h> /* See NOTES */ #include <sys/socket ...

  6. 【转】如何在win10(64位系统)上安装apache服务器

    如何在win10(64位系统)上安装apache服务器 今天装了Apache服务器,下面是我总结的方法: 一,准备软件 1.64位的apache版本 传送门:http://www.apacheloun ...

  7. TLS编程

    最近测试广州电信的电话会议平台,该平台接入采用HTTPS协议,于是有了本文.09年培训时写过一个简单的TLS C/S结构交互,采用openssl的ssl相关接口,但与生产相去胜远.本文采用openss ...

  8. SQL经常使用的一些词

    sp_helptext: 例:exec sp_helptext proc_name(查看存储过程的定义) sp_rename: 例:exec sp_rename 'proc_name1','proc_ ...

  9. 栈与队列(Stack and Queue)

    1.定义 栈:后进先出(LIFO-last in first out):最后插入的元素最先出来. 队列:先进先出(FIFO-first in first out):最先插入的元素最先出来. 2.用数组 ...

  10. hdu3642 Get The Treasury 线段树--扫描线

    Jack knows that there is a great underground treasury in a secret region. And he has a special devic ...