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
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