在 CentOS(以及一般 Linux 系统)里,ulimit 能调到多大,不是由 ulimit 命令本身决定的,而是由内核参数、系统资源、用户配置共同限制。下面分层说明。
ulimit 控制的是 单进程(或单用户会话)资源上限,常见包括:
ulimit -H 显示硬限制常见相关内核参数:
# 系统级最大打开文件数
fs.file-max
# 系统级最大进程数
kernel.pid_max
# 单用户最大进程数
/etc/security/limits.d/*.conf
查看:
cat /proc/sys/fs/file-max
cat /proc/sys/kernel/pid_max
理论上限
fs.file-max 限制(通常几百万)常见设置
* soft nofile 65535
* hard nofile 65535
极限例子(高并发服务器)
* hard nofile 1000000
fs.file-max = 2000000
⚠️ 但要注意:
受以下限制:
kernel.pid_maxnproc 限制查看:
ulimit -u
cat /proc/sys/kernel/pid_max
一般:
* hard nproc 65535
极限服务器:
kernel.pid_max = 4194304
ulimit -s 10240 # 10MB
ulimit -n 100000
/etc/security/limits.conf
或
/etc/security/limits.d/*.conf
示例:
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
⚠️ 需要:
/etc/sysctl.conf
fs.file-max = 2000000
kernel.pid_max = 4194304
生效:
sysctl -p
systemd 服务不读 limits.conf
[Service]
LimitNOFILE=1000000
LimitNPROC=65535
Docker 容器
--ulimit nofile=65535:65535
32 位程序
CentOS 的 ulimit 理论上可以调到几十万甚至上百万,但实际最大值取决于内核参数、内存、程序架构和服务管理方式。
如果你愿意,可以告诉我:
我可以给你一套可直接用的参数模板。