修改Linux最大文件句柄数踩过坑

项目需要,修改了linux的最大打开文件描述符,大概超过了200多万,然而注销后就无法登录了。。。
/etc/security/limits.conf,配置内容如下:

* soft nofile 2048000 // 软限制
* hard nofile 2048000 //硬限制
admin hard memlock unlimited
admin soft memlock unlimited
admin hard nproc 1024000
admin hard nofile 1024000
admin hard as unlimited

改完上述配置。注销后,root无法登录,用admin账号su root报出如下错误:
su: cannot open session: Permission denied

貌似要修复比较麻烦(这个稍后操作):
https://blog.csdn.net/qq_40809549/article/details/82658720
上面这个文章是centos6的,下面是centos7的供参考:
https://blog.csdn.net/chenmingwei000/article/details/79946551
完成修改以后,输入两次exit,输入reboot重启机器。

在处理之前,先搞清楚一些配置项的意思:

  • 用户参数:文章开头处提到的 /etc/security/limits.conf 中可以设置系统资源。很多网上文章只提到了修改这个文件。然而仅修改这个文件会导致容易踩坑。
    ulimit设置的参数(/etc/security/limits.conf),其实是对单一程序的限制,进程级别。软限制(soft nofile),程序可动态调整至硬限制,只会做出warnning。硬限制(hard limit)无法突破。hard limit值设置受限于nr_open。

    /etc/security/limits.d/ 中也可以配置,系统是先加载limits.conf。然后按照英文字母顺序加载limits.d目录下的配置文件,后加载配置覆盖之前的配置。
    http://kefhifi.com/?p=1521

  • 内核参数:单个进程可分配的最大文件数: /proc/sys/fs/nr_open。单个进程可分配的最大文件句柄数。

      [admin@node8 ~]$ cat /proc/sys/fs/nr_open
      1048576	
    

    临时修改:

    echo xxxxx > /proc/sys/fs/nr_open

    永久修改,需要通过sysctl -p生效:

    /etc/sysctl.conf 中设置 fs.nr_open = xxxxxx

  • 内核参数:系统最大打开文件描述符数: /proc/sys/fs/file-max。内核可分配的最大文件句柄数。

      [admin@node8 ~]$ cat  /proc/sys/fs/file-max
      13071445
    

    临时修改:

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

    永久修改,需要通过sysctl -p生效:

    /etc/sysctl.conf 中设置 fs.file-max = xxxxxx

由于 hard limit不能大于/proc/sys/fs/nr_open,假如hard limit大于nr_open,注销后无法正常登录。由此导致悲剧。。。

上述参数的大小关系是:soft limit < hard limit < nr_open < file-max

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值