进程、文件描述符限制

  1. Linux通过‘/etc/security/limits.conf’来限制 ‘进程’、‘文件描述符’的最大使用量,现做简单介绍

  2. 我们结合具体的示例说明/etc/security/limits.conf

    * soft nofile 1024000 # ‘*’代表对于所有用户有效,‘*’可以是具体的用户,如‘root’
    * hard nofile 1024000 # ‘hard’表示达到阈值会阻止进一步占用资源,‘soft’表示达到阈值会发出警告
    * soft nproc  65535   # ‘nofile’表示限制打开‘文件描述符’数量,‘nproc’表示限制打开‘进程’的数量
    * hard nproc  65535   # ‘1024000’表示具体的阈值是1024000
    
  3. 上一步我们设置了阈值1024000,但是它不能无限大,具体能大到多少呢?看下面的介绍

    # 先说‘文件描述符’
    # 文件 /proc/sys/fs/file-max 用来限制‘文件描述符’最大的阈值,执行
    cat /proc/sys/fs/file-max
    # 显示了一个数字,比如是 1677215 ,则‘nofile’的阈值不能超过1677215,不要做修改该文件
    
    # 再说最大‘进程’数
    # 查看最大‘进程’创建数
    ulimit -u
    # 修改最大‘进程’创建数为1024000
    ulimit -u 1024000
    # 这里注意,由于Linux系统最多可以使用65535个‘端口’,而有些‘进程’运行需要占用‘端口’,因此建议最大进程不超过65535个
    
  4. 修改完成后,我们执行以下命令使配置生效

    sysctl -p
    
  5. 我们通过ulimit来临时修改这些配置,现在简单介绍下ulimit

    -H    设置硬资源限制,设置后不能增加
    -S    设置软资源限制,设置后可以增加,但不超过硬资源设置
    
    -a    显示当前所有的limit信息
    
    -n    文件描述符的最大值
    -u    用户进程数的最大值
    
    -c    占内核文件的最大值,以Blocks为单位
    -f    进程创建文件最大值,以Blocks为单位
    
    -t    CPU占用时间的最大值,以秒(S)为单位
    
    -d    进程占数据段最大值,以KBytes为单位
    -p    管道缓冲区的最大值,以KBytes为单位
    -s    占用线程栈的最大值,以KBytes为单位
    
    -l    可加锁内存的最大值,以KBytes为单位
    -m    要占用内存的最大值,以KBytes为单位
    -v    进程占虚拟内存最大值,以KBytes为单位
    
Copyright © 豆包嘿嘿~ 2012-∞ 冀ICP备17033181号 all right reserved,powered by Gitbook修订: 12-12-31 12:00

results matching ""

    No results matching ""