• limits.conf文件修改注意事项


    limits.conf文件限制着用户可以使用的最大文件数,最大线程,最大内存等资源使用量。

    最近在测试环境部署hadoop集群和elastic集群,因此需要对limits.conf文件进行修改。

    vim /etc/security/limits.conf
    * soft  nofile  1048576
    * hard  nofile  1048576 
    * soft  memlock -1
    * hard  memlock -1
    * soft  nproc   -1
    * hard  nproc   -1

    出于好奇,发现内存和线程都可以设置为不限制。想偷懒把nofile也设置成不限制。错误配置如下

    vim /etc/security/limits.conf
    * soft  nofile  -1
    * hard  nofile  -1
    * soft  memlock -1
    * hard  memlock -1
    * soft  nproc   -1
    * hard  nproc   -1

    过了不久,开发的同事找我,有个测试集群不能远程了,发现就是我修改的这台设备。我自己试了下切换用户,报错如下:

    # su - root
    could not open session  

    将配置文件修改为默认值后,可以远程登录。

    所有,修改limits.conf这类限制资源使用的文件,一定要备份配置文件,并进行测试,最好能多开一个终端,在当前终端不可使用的时候,用来执行补救措施。

    那么如何配置nofile,确定nofile的最大值呢。

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

    # 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

    另外nofile的配置可以参考

    http://jameswxx.iteye.com/blog/2096461

    • /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决定
  • 相关阅读:
    分享一个一直在用的golang单测小脚本
    JakeCoffman/Cron定时任务库核心实现源码解析
    uniapp h5部署二级目录
    Selenium
    Unable to connect to the server: x509: cannot validate certificate for 172.25.97.19 because it doesn't contain any IP SANs
    python
    chrome
    edit-plus 添加单引号 ''
    CALL_AND_RETRY_LAST Allocation failed
    nacos 客户端异常:SocketTimeoutException: connect timed out
  • 原文地址:https://www.cnblogs.com/micmouse521/p/8116329.html
Copyright © 2020-2023  润新知