在 CentOS(以及大多数 Linux 发行版) 中,ulimit 确实可能影响性能,但不是“直接拖慢系统”,而是 限制资源使用,从而间接影响性能或稳定性。是否“影响性能”取决于 设置是否合理、业务类型、并发量。
下面分点说明。
ulimit 用来限制 单个进程 可使用的系统资源,常见包括:
| 资源 | 含义 | 性能相关 |
|---|---|---|
nofile |
最大打开文件数 | ✅ 高 |
nproc |
最大进程/线程数 | ✅ |
stack |
线程栈大小 | ✅ |
memlock |
锁定内存 | ✅(数据库/大数据) |
core |
core dump 大小 | ❌ |
cpu |
CPU 时间 | ⚠️ |
fsize |
文件大小 | ⚠️ |
nofile(最常见、最容易踩坑)影响:
Too many open files
性能表现:
✅ 建议:
* soft nofile 65535
* hard nofile 65535
nproc(进程 / 线程数)影响:
问题表现:
fork: retry: Resource temporarily unavailable性能影响:
✅ 建议:
* soft nproc 65535
* hard nproc 65535
stack(线程栈)影响:
问题:
性能影响:
✅ 一般不用改
ulimit -s
# 常见 8192 KB
memlock(数据库 / 大数据)典型场景:
影响:
✅ 数据库服务器建议:
* soft memlock unlimited
* hard memlock unlimited
✅ ulimit 设置合理时:
✅ ulimit 只是“上限”
不用的资源不会消耗性能
| 现象 | 原因 |
|---|---|
| 并发上不去 | nofile 太小 |
| 服务启动失败 | nproc 太小 |
| TCP 连接异常 | fd 不够 |
| Java 线程创建失败 | nproc / stack |
| 大数据组件 OOM | memlock |
ulimit -n 65535
/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
⚠️ 注意:
/etc/systemd/system.conf
/etc/systemd/user.conf
DefaultLimitNOFILE=65535
DefaultLimitNPROC=65535
然后:
systemctl daemon-reexec
✅ ulimit 本身不影响性能,但设置不当会严重限制性能或导致服务不可用
nofile 65535
nproc 65535
memlock unlimited
如果你愿意,可以告诉我:
我可以给你 一套针对你环境的 ulimit 最佳实践配置。