连接数限制因素拆解

限制类型 具体影响项
操作系统限制 1. 单个进程文件描述符限制(默认通常较低,如1024);
  1. 可用端口范围(默认1024-65535);
  2. 最大待处理连接队列(net.core.somaxconn) | | Nginx配置限制 | 1. 工作进程数(worker_processes);
  3. 单个工作进程最大连接数(worker_connections) | | 硬件资源限制 | 1. 内存(每个连接约占用几KB内存);
  4. CPU处理能力(高并发下CPU负载阈值) |

核心参数详解(含查看/修改命令)

1. 操作系统层面参数

参数名称 作用 查看命令 临时修改命令 永久修改方式
文件描述符限制 单个进程可打开的最大文件/连接数 ulimit -n ulimit -n 65535 编辑/etc/security/limits.conf,添加
`* soft nofile 65535

注:永久修改后需执行 sysctl -p 使sysctl配置生效,文件描述符限制需重新登录终端生效。

2. Nginx配置层面参数

参数名称 作用 推荐配置 说明
worker_processes Nginx工作进程数 worker_processes auto; 自动适配CPU核心数(也可手动指定核心数)
worker_connections 单个工作进程最大连接数 worker_connections 10240; 不可超过系统文件描述符限制
multi_accept 是否一次性接受所有新连接 multi_accept on; 开启后提升高并发场景下的连接接收效率
keepalive_timeout 长连接超时时间 keepalive_timeout 65; 控制长连接空闲超时,避免端口占用
keepalive_requests 单个长连接可处理的请求数 keepalive_requests 100; 提升连接复用率,减少连接建立开销

经典Nginx配置示例

worker_processes auto;  # 适配CPU核心数
worker_rlimit_nofile 65535;  # 突破Nginx进程文件描述符限制

events {
    worker_connections 10240;  # 单进程最大连接数
    multi_accept on;  # 一次性接收所有新连接
    use epoll;  # 启用高效事件驱动模型(Linux推荐)
}

http {
    keepalive_timeout 65;  # 长连接超时时间
    keepalive_requests 100;  # 单个长连接最大请求数
}

最大连接数计算与调整步骤

1. 理论最大连接数公式

最大连接数 = worker_processes(工作进程数) × worker_connections(单进程连接数)

2. 完整调整步骤

  1. 检查当前限制
  2. 调整系统限制