Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

增大nginx的并发限制

需要更改系统最大文件句柄打开数ulimit

【推荐方法】用nginx内置的参数去覆盖系统的ulimit

  • 修改nginx.conf文件

    • 在最顶层(与user平行的位置),添加如下行
      worker_processes auto;
      worker_rlimit_nofile 8192;
      events {
          worker_connections 4096;
      }
      
      • worker_processes指定开启的nginx工作进程数
        • auto的话,会自动设置成CPU核心数,双核就是2
        • 也可以自己手动设置,一般不超过CPU核心数
      • worker_rlimit_nofile就是内置的参数,可以覆盖ulimit
        • 这个参数要大于等于worker_processes * worker_connections
      • worker_connections指定每个工作进程,允许打开的最大连接数(一个连接就占用一个文件句柄)
  • 查看效果

    • 查看nginx开启的工作进程pid
      ps -ef | grep nginx
      
    • 把pid代入下面的命令,执行即可输出
      cat /proc/<pid>/limits | grep Max\ open\ files
      

直接永久更改系统所有用户的ulimit

  • 修改limits.conf文件

    • 执行
      sudo vim /etc/security/limits.conf
      
    • 添加两行
      *       soft    nofile  16384
      *       hard    notile  16384
      
      • 这里*代表对所有用户生效
  • 修改/etc/pam.d/login文件

    • 执行
      sudo vim /etc/pam.d/login
      
    • 添加一行
      session    required     /lib/x86_64-linux-gnu/security/pam_limits.so
      
      • 需要自己查找确定pam_limits.so文件的真实位置,一般是在/lib/security/pam_limits.so或者/lib/x86_64-linux-gnu/security/pam_limits.so
  • 重新登录终端即可