系统资源限制 / 文件描述符配置

系统资源限制

阐述:

linux 系统对各个资源的使用都是有限制的,如果要更改默认阈值,可通过命令(ulimit)临时生效或者配置文件(/etc/security/limits.conf和/etc/security/limits.d/目录下文件)永久生效两种方式。

limits.conf 配置说明(重启生效)

注意

限制资源使用的配置文件是 /etc/security/limits.conf,和/etc/security/limits.d/目录,/etc/security/limits.d/里面配置会覆盖/etc/security/limits.conf的配置

限制的资源类型:

所创建的内核文件的大小、进程数据块的大小、Shell 进程创建文件的大小、内存锁住的大小、常驻内存集的大小、打开文件描述符的数量、分配堆栈的最大大小、CPU 时间、
单个用户的最大线程数、Shell 进程所能使用的最大虚拟内存。同时,它支持硬资源和软资源的限制。

配置文件格式

#<domain> <type> <item> <value>
#* soft core 0
#root hard core 100000
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#ftp - chroot /ftp
#@student - maxlogins 4
-----------分割线,上面是配置文件的模板,下面是自己添加的------------------------
* soft nofile 655350 #表示任何一个用户可以打开的最大的文件描述符数量
*    hard nofile 655350
* soft nproc 655350 #表示任何一个用户可以打开的最大的进程数
*    hard nproc 655350
@student hard nofile 65535 #student组中的任何人最多能打开文件描述符数量是65535,并且会在打开65000个时发出警告
@student soft nofile 65000
@student hard nproc 50    #student组中的任何人不能拥有超过50个进程,并且会在拥有30个进程时发出警告
@student soft nproc 30
View Code

说明:
第一列表示用户和组(@开头)。第二列表示软限制还是硬限制,第三列表示限制的资源类型,第四列表示限制的最大值
hard和soft的区别: soft是一个警告值,而hard则是一个真正意义的阀值,超过就会报错,一般情况下都是设为同一个值。
core是内核文件,nofile是文件描述符,noproc是进程,一般情况下只限制文件描述符数和进程数就够了

Tips:
针对某个用户进行限制还可以在用户的家目录的bashrc文件种配置ulimit 命令

ulimit 使用

常用命令
ulimit -a 查看所有资源限制
ulimit -n    -n默认查看的是soft limit
ulimit -Hn    查看hard limit
ulimit -Sn 160000    设置最soft limit,注意soft limit必须小于hard limit
ulimit -Hn 160000    通过ulimit -Hn设置最Hard limit
View Code


系统调优

1)有些资源使用设置成无限制(unlimited): 
数据段长度:ulimit -d unlimited 
最大内存大小:ulimit -m unlimited 
堆栈大小:ulimit -s unlimited 
CPU 时间:ulimit -t unlimited 
虚拟内存:ulimit -v unlimited 
  
上述只是暂时地,适用于通过 ulimit 命令登录 shell 会话期间。
永久地,通过将一个相应的 ulimit 语句添加到由登录 shell 读取的文件中, 即特定于 shell 的用户资源文件,如:

2) 解除 Linux 系统的最大进程数和最大文件打开数限制:
vi /etc/security/limits.conf
# 添加如下的行
* soft noproc 11000
* hard noproc 11000
* soft nofile 4100
* hard nofile 4100 
说明:* 代表针对所有用户
noproc 是代表最大进程数
nofile 是代表最大文件打开数 

3) 让 SSH 接受 Login 程式的登入,方便在 ssh 客户端查看 ulimit -a 资源限制:
a、vi /etc/ssh/sshd_config 
把 UserLogin 的值改为 yes,并把 # 注释去掉
b、重启 sshd 服务:
/etc/init.d/sshd restart

4) 修改所有 linux 用户的环境变量文件:
vi /etc/profile 
ulimit -u 10000
ulimit -n 4096
ulimit -d unlimited 
ulimit -m unlimited 
ulimit -s unlimited 
ulimit -t unlimited 
ulimit -v unlimited
View Code

文件描述符资源限制

文件描述符fd:

文件描述符是linux内核为了高效管理已被打开的文件所创建的索引,所有的IO操作系统调用都是使用文件描述符。
每打开一个文件都会创建文件描述符,并将文件指针指向这个文件描述符,文件描述符由非负整数表示,系统默认的3个文件描述符是0,1,2,即标准输入、标准输出、标准错误输出。
此时打开一个文件即从3开始,写入到文件描述符表中。每个进程在PCB(Process Control Block)即进程控制块中都保存着一份文件描述符表。
能打开多少文件描述符?理论来说内存有多大就可以打开多少文件描述符,但内核进行管理 一般是内存的10%(系统限制)。
文件描述符限制是系统资源限制的一部分,调试也是通过Ulimit 或者limits.conf 两种方式。
View Code

查看

查看系统限制:
方法1.
[root@WebA-136 ~]# sysctl -a | grep fs.file-max
fs.file-max = 98622
方法2.
[root@WebA-136 ~]# cat /proc/sys/fs/file-max
98622
查看用户级别限制:
ulimit -n


修改

系统限制修改
临时修改
[root@WebA-136 ~]# sysctl -w fs.file-max=400000
fs.file-max = 400000
You have new mail in /var/spool/mail/root
[root@WebA-136 ~]# echo 350000 >/proc/sys/fs/file-max
[root@WebA-136 ~]# sysctl -a | grep fs.file-max
fs.file-max = 350000
[root@WebA-136 ~]#
永久修改
将fs.file-max=400000添加到/etc/sysctl.conf配置文件中。

用户级别修改(单个进程最大打开文件个数)
临时修改,重启失效
ulimit -SHn 10240#修改可以打开的文件描述符数量限制

永久修改,所有用户都生效。(将hard,soft写入文件中,此文件格式是#<domain>用户或@组名或* <type>限制类型hard soft <item>限制的资源名称 <value> 值)
vim /etc/security/limits.conf
永久修改,所有用户都生效。在/etc/security/limits.d/*.conf 中,系统会先读取这样的文件,此文件中的项目会覆盖/etc/security/limits.conf中的项目,建议将其内容注释。
永久修改,修改单一用户,写入用户环境变量中 .bash_profile 写入ulimit -SHn 10240.
echo "ulimit -SHn 10240" >>/root/.bash_profile,或者在应用程序的启动脚本写入ulimit -n 10240

猜你喜欢

转载自www.cnblogs.com/fanggege/p/11323950.html