Linux修改最大文件句柄数

1、临时生效

# ulimit -SHn 10000

其实ulimit 命令身是分软限制和硬限制,加-H就是硬限制,加-S就是软限制。默认显示的是软限制,如果运行ulimit 命令修改时没有加上-H或-S,就是两个参数一起改变。

软限制和硬限制的区别?

硬限制就是实际的限制,而软限制是警告限制,它只会给出警告。

2、永久生效

要想ulimits 的数值永久生效,必须修改配置文件/etc/security/limits.conf

在该配置文件中添加

* soft nofile 204800  

* hard nofile 204800

* soft nproc 204800

* hard nproc 204800 

echo "* soft nofile 204800"  >> /etc/security/limits.conf

echo "* hard nofile 204800"  >> /etc/security/limits.conf

echo "* soft nproc 204800"  >> /etc/security/limits.conf

echo "* hard nproc 204800 "  >> /etc/security/limits.conf

* 表示所用的用户

3、修改系统总限制

其实上面的修改都是对一个进程打开的文件句柄数量的限制,我们还需要设置系统的总限制才可以。

假如,我们设置进程打开的文件句柄数是1024 ,但是系统总限制才500,所以所有进程最多能打开文件句柄数量500。从这里我们可以看出只设置进程的打开文件句柄的数量是不行的。所以需要修改系统的总限制才可以。

echo  6553560 > /proc/sys/fs/file-max

上面是临时生效方法,重启机器后会失效;

永久生效方法:

修改 /etc/sysctl.conf, 加入

echo   fs.file-max = 6553560  >> /etc/sysctl.conf

重启生效

原文:https://blog.csdn.net/saga_gallon/article/details/80305515 

总结:

  • /proc/sys/fs/file-max限制不了/etc/security/limits.conf

  • 只有root用户才有权限修改/etc/security/limits.conf

  • 对于非root用户, /etc/security/limits.conf会限制ulimit -n,但是限制不了root用户

  • 对于非root用户,ulimit -n只能越设置越小,root用户则无限制

  • 任何用户对ulimit -n的修改只在当前环境有效,退出后失效,重新登录新来后,ulimit -n由limits.conf决定

  • 如果limits.conf没有做设定,则默认值是1024

  • 当前环境的用户所有进程能打开的最大问价数量由ulimit -n决定

补充:

更改普通用户最大进程数,立即生效,centos6系统:

[root@chegva resin]#cat /etc/security/limits.d/90-nproc.conf

*          soft    nproc     102400

centos7系统:

[root@chegva ~]# cat /etc/security/limits.d/20-nproc.conf

*          soft    nproc     4096

root       soft    nproc     unlimited

# 查找进程的最大句柄数限制

[root@chegva ~]# cat /proc/19736/limits  |grep 'files'

Max open files            3002400              3002400              files

# 查看当前进程打开的文件句柄数

[root@chegva ~]# ls /proc/19736/fd |wc -l

28

# 查看某个进程打开的文件数

[root@chegva ~]# lsof -p 9395 |wc -l

41

查看所有进程的文件打开数

[root@chegva ~]# lsof |wc -l

294478

参考:

anzhihe安志合个人博客,版权所有丨 如未注明,均为原创 丨转载请注明转自:https://chegva.com/3148.html | ☆★★每天进步一点点,加油!★★☆

您可能还感兴趣的文章!

发表评论

电子邮件地址不会被公开。 必填项已用*标注