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决定
  • 相关阅读:
    人人学IoT 助学思维导图
    基于netty4.x开发时间服务器
    JAVA实现的截屏程序
    java获取硬盘ID以及MAC地址
    神经网络joone_engin模式识别示范,eclipse
    神经网络/人工智能 开源库
    双目测距
    OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波
    一个java 开源神经网络引擎 joone
    用Java开源项目JOONE实现人工智能编程
  • 原文地址:https://www.cnblogs.com/micmouse521/p/8116329.html
Copyright © 2011-2022 走看看