Linux资源控制

通过对Linux系统上使用用户的资源进行合理限制,能够很好地控制资源的过度使用。防止浪费资源或造成服务钱相应变慢,从某种程度上来说,设置合理的资源控制机制,也达到了系统调优的效果,增强了系统的处理能力与安全性。

ulimit

通过ulimit是限制资源使用的一种方式,通常有硬限制(hard)与软限制(soft)之分。普通用户可以设置自己的软限制,但不能高于自己的硬限制。

ulimit  -a 查看资源限制列表

ulimit -Hn  限制数     -----硬限制  临时规则

ulimit  -Sn  限制数    -----软限制  临时规则

修改/etc/security/limits.conf  ----将上面的命令,添加到文件中,可以对linux的限制实现永久规则  

@test  soft  maxlogins  2

@test  hard  maxlogins  2

限制test 组的任何用户仅可登录系统2次,超过则会报错

或者:

        # 添加如下的行

        * soft noproc 11000

        * hard noproc 11000

        * soft nofile 4100

        * hard nofile 4100

       说明:* 代表针对所有用户,noproc 是代表最大进程数,nofile 是代表最大文件打开数

注意:管理员可以调节软硬限制,但普通用调节软限制,硬限制用户只能减小

ulimit的常用用法:man ulimit

ulimit -n xx 修改每个进程可打开的文件数,缺省值是 1024。

ulimit -H/S -f         查看硬/软限制的文件数

ulimit -n 进程名    修改每个进程可打开的文件数,缺省值是 1024。

其他建议设置成无限制(unlimited)的一些重要设置是:

     数据段长度:ulimit -d unlimited

     最大内存大小:ulimit -m unlimited

     堆栈大小:ulimit -s unlimited

     CPU 时间:ulimit -t unlimited

     虚拟内存:ulimit -v unlimited

Linux资源控制

text文本:存储可执行的代码

数据:DATA初始化数据(如变量),BBS初始化0数据

Heap(堆)通过内存malloc方法,动态分布数据

Stack(栈)(储存局部变量,函数等)

 

ulimit  -H/S  -l  1000  memlock-linux允许将进程暂时不需要的数据,暂时存放在swap分区中需要时在调回来

ulimit  -H/S -u  15  限制进程数量为15(限制普通用户)

 

对服务的限制

一些服务在自己的配置文件中有专门的限制选项,如nginx tomcat等,而在systemd下也可以对文件(服务)进行单独限制

在/etc/systemd/system目录下,新建一个目录,命名为服务名.d,如httpd_service.d,然后再下面再创建一个以.conf结尾的文件即可(如:/etc/systemd/system/http_service.d/http_service.conf)

vim  /etc/systemd/system/http_service.d/http_service.conf

[service]

limitnofile=32     //限制最大文件数量

这个文件的优先级大于/usr/lib/systemd/system 和 /etc/systemd/system

最后用:systemctl restart reload生效

所有限制参数请参考:  man systemd.exec