在 CentOS(以及大多数 Linux 系统)中,ulimit 能改多大,不是由 ulimit 本身决定的,而是由内核参数、系统资源和配置共同决定。下面分情况说明。
ulimit 分为两类:
查看当前限制:
ulimit -a
ulimit -n # 打开文件数
ulimit -u # 最大进程数
默认值
1024理论上限
cat /proc/sys/fs/file-max
这个值通常是 百万级(如 6~10 百万)
实际建议
655351000000✅ 可以改到 100 万,但要看系统资源。
默认值
上限
cat /proc/sys/kernel/pid_max
32768 或 65535✅ 一般不建议超过 65535
8192 KB因为:
/etc/security/limits.confvim /etc/security/limits.conf
示例(推荐):
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
⚠️ 注意:
* 对 root 不一定生效root soft nofile 65535
root hard nofile 65535
如果用 systemd 启动服务,limits.conf 可能不生效。
需要改 service 或 systemd 配置:
vim /etc/systemd/system.conf
vim /etc/systemd/user.conf
添加:
DefaultLimitNOFILE=1000000
DefaultLimitNPROC=65535
然后:
systemctl daemon-reexec
vim /etc/sysctl.conf
fs.file-max = 1000000
kernel.pid_max = 65535
生效:
sysctl -p
❌ ulimit 能无限大
→ 错,受内核和内存限制
❌ 改完 limits.conf 立刻生效
→ 错,需要重新登录或重启服务
❌ ulimit 能突破内核限制
→ 错,ulimit 只是“用户态限制”
CentOS 中 ulimit 能改多大,取决于内核参数、系统资源和你是谁(root / 普通用户)。
文件描述符通常可安全调到 65535 ~ 1000000,进程数一般 不超过 65535。
如果你愿意,可以告诉我:
我可以给你一套最合适的具体配置方案。