Centos7 设置最大进程、线程数

Linux 系统中可以设置关于资源的使用限制,比如:进程数量,文件句柄数,连接数等等。在使用 Linux 系统时,若切换 root 用户为普通用户,可能出现 Resource temporarily unavailable 报错,这是由于当前用户的进程数超出限制。因此需要手动修改 Linux 系统的最大进程数。

1. 关键值

nproc:表示max number of processes,是操作系统级别对每个用户创建的进程数的限制。

nofile:表示max number of open file descriptors,每个进程可以打开的文件数的限制。

hard/soft:soft 是一个警告值,而 hard 则是一个真正意义的阀值,超过就会报错。

2. 查看系统资源

  • 查看当前系统的所有限制值

    ulimit -a
    
  • 查看用户同时打开的文件数(linux系统默认的只要1024) 也是临时修改(不需要重启),命令后面加参数即可:ulimit -n 65535

    ulimit -n
    
  • 查看Linux系统级的最大打开文件数限制

    cat /proc/sys/fs/file-max
    

3. ulimit的选项用法

-a  显示目前资源限制的设定

-c <core文件上限>  设定core文件的最大值,单位为区块

-d <数据节区大小>  程序数据节区的最大值,单位为KB

-f <文件大小>  shell所能建立的最大文件,单位为区块

-H  设定资源的硬性限制,也就是管理员所设下的限制

-m <内存大小>  指定可使用内存的上限,单位为KB

-n <文件数目>  指定同一时间最多可开启的文件数

-p <缓冲区大小>  指定管道缓冲区的大小,单位512字节

-s <堆叠大小>  指定堆叠的上限,单位为KB

-S  设定资源的弹性限制

-t <CPU时间>  指定CPU使用时间的上限,单位为秒

-u <程序数目>  用户最多可开启的程序数目

-v <虚拟内存大小>  指定可使用的虚拟内存上限,单位为KB

  • ulimit -a释义

      # 核心文件大小(块,-c)0
      core file size          (blocks, -c) 0
      # 数据段大小(kbytes,-d)不受限制
      data seg size           (kbytes, -d) unlimited
      # 计划优先级0
      scheduling priority             (-e) 0
      # 计划优先级0
      file size               (blocks, -f) unlimited
      # 挂起信号(-i)7258
      pending signals                 (-i) 7258
      # 最大锁定内存(KB,-l)64
      max locked memory       (kbytes, -l) 64
      # 最大内存大小(kbytes,-m)不受限制
      max memory size         (kbytes, -m) unlimited
      # 打开文件(-n)1024
      open files                      (-n) 1024
      # 管道大小(512字节,-p)8
      pipe size            (512 bytes, -p) 8
      # POSIX消息队列(字节,-q)819200
      POSIX message queues     (bytes, -q) 819200
      # 实时优先级0
      real-time priority              (-r) 0
      # 堆栈大小(kbytes,-s)8192
      stack size              (kbytes, -s) 8192
      # cpu时间(秒,-t)无限制
      cpu time               (seconds, -t) unlimited
      # 最大用户进程(-u)7258
      max user processes              (-u) 7258
      # 虚拟内存(KB,-v)不受限制
      virtual memory          (kbytes, -v) unlimited
      # 文件锁定(-x)不受限制
      file locks                      (-x) unlimited
    

4. 系统资源限制设置

  • 修改/etc/security/limits.conf文件,并保存

    vim /etc/security/limits.conf
    
  • 在最后添加下面这几句

    *           soft  core   unlimit
    *           hard  core   unlimit
    *           soft  fsize  unlimited
    *           hard  fsize  unlimited
    *           soft  data   unlimited
    *           hard  data   unlimited
    *           soft  nproc  65535
    *           hard  nproc  63535
    *           soft  stack  unlimited
    *           hard  stack  unlimited
    *           soft  nofile  409600
    *           hard  nofile  409600
    
  • 说明

    noproc 是代表最大进程数

    nofile 是代最大文件打开数

    * 是表示修改所有用户的限制

  • 修改/etc/security/limits.d/20-nproc.conf文件,并保存

    vim /etc/security/limits.d/20-nproc.conf
    
    #*          soft    nproc     65535
    #root       soft    nproc     unlimited
    *       soft    nproc   65535
    *       hard    nproc   65535
    

    注释原本的,添加新增的

    然后执行reboot命令重启,root和普通用户的线程和最大打开文件数了都是65535