zoukankan      html  css  js  c++  java
  • 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决定
  • 相关阅读:
    ....
    CodeForces 375A(同余)
    POJ 2377 Bad Cowtractors (最小生成树)
    POJ 1258 AgriNet (最小生成树)
    HDU 1016 Prime Ring Problem(全排列)
    HDU 4460 Friend Chains(bfs)
    POJ 2236 Wireless Network(并查集)
    POJ 2100 Graveyard Design(尺取)
    POJ 2110 Mountain Walking(二分/bfs)
    CodeForces 1059B Forgery(模拟)
  • 原文地址:https://www.cnblogs.com/micmouse521/p/8116329.html
Copyright © 2011-2022 走看看