Linux 中 limits.conf 配置文件说明

Posted by Jeremy Song on 2023-01-18
Estimated Reading Time 3 Minutes
Words 833 In Total
Viewed Times

linux 资源限制配置文件是 /etc/security/limits.conf;限制用户进程的数量对于 linux 系统的稳定性非常重要。 limits.conf 文件限制着用户可以使用的最大文件数,最大线程,最大内存等资源使用量。

1
2
3
4
5
6
7
8
9
* soft nofile 655350  #任何用户可以打开的最大的文件描述符数量,默认1024,这里的数值会限制tcp连接
* hard nofile 655350
* soft nproc 655350 #任何用户可以打开的最大进程数
* hard nproc 650000

@student hard nofile 65535
@student soft nofile 4096
@student hard nproc 50 #学生组中的任何人不能拥有超过50个进程,并且会在拥有30个进程时发出警告
@student soft nproc 30

hardsoft 两个值都代表什么意思呢? soft 是一个警告值,而 hard 则是一个真正意义的阀值,超过就会报错。

所有用户创建的进程数

1
2
3
4
5
$ ps h -Led -o user | sort | uniq -c | sort -n
2 shtermuser
11 zabbix
206 elasticsearch
490 root

系统最大打开文件描述符数

查看

1
2
$ cat /proc/sys/fs/file-max
6553600

设置

1
2
$ vim /etc/sysctl.conf
fs.file-max = 6553600

进程最大打开文件描述符数

查看 ulimit -n 默认查看的是 soft limit

1
2
$ ulimit -n
170000

临时设置

1
2
3
4
5
#通过ulimit -Sn设置最大打开文件描述符数的soft limit,注意soft limit必须小于hard limit
$ ulimit -Sn 160000

#同时设置soft limit和hard limit。对于非root用户只能设置比原来小的hard limit
$ ulimit -n 180000

永久设置

1
2
3
#root权限下,在/etc/security/limits.conf中添加如下两行,表示所有用户最大打开文件描述符数的soft limit为102400,hard limit为104800。重启生效
* soft nofile 102400
* hard nofile 104800

注意:设置 nofilehard limit 还有一点要注意的就是 hard limit 不能大于 /proc/sys/fs/nr_open,假如 hard limit 大于 nr_open,注销后将无法正常登录。

查看当前系统使用的打开文件描述符数

1
2
$ cat /proc/sys/fs/file-nr
5664 0 186405

其中第一个数表示当前系统已分配使用的打开文件描述符数,第二个数为分配后已释放的(目前已不再使用),第三个数等于 file-max

如何配置nofile

知道了 /etc/security/limits.conf 中的参数含义之后,那么如何配置 nofile,确定 nofile 的最大值呢。

解答:使用 ulimt -n 命令进行测试,如果小于系统允许的最大值,设置成功,大于最大值,系统会报错提示。

1
2
3
4
5
6
7
$ ulimit -n 1100000
-bash: ulimit: open files: cannot modify limit: Operation not permitted
$ ulimit -n 1048576
$ ulimit -n 1048577
-bash: ulimit: open files: cannot modify limit: Operation not permitted
$ ulimit -n 1048575
$ ulimit -n 1048576

ulimit -a/n/H/S 都有什么含义

  • ulimit -a 显示当前所有的资源限制
  • ulimit -H 设置硬件资源限制
  • ulimit -S 设置软件资源限制
  • ulimit -n 设置进程最大打开文件描述符数
  • ulimit -u <程序数目>  用户最多可开启的程序数目

总结

  • a. 所有进程打开的文件描述符数不能超过 /proc/sys/fs/file-max
  • b. 单个进程打开的文件描述符数不能超过 user limitnofilesoft limit
  • c. nofilesoft limit 不能超过其 hard limit
  • d. nofilehard limit 不能超过 /proc/sys/fs/nr_open

欢迎关注我的公众号 须弥零一,跟我一起学习IT知识。


如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !