在 CentOS 中,ulimit(资源限制)可以在多个地方配置,具体取决于你想要临时生效还是永久生效,以及作用范围是当前 shell、某个用户还是系统服务。
下面按常见场景说明:
直接在终端执行:
ulimit -n 65535 # 打开文件数
ulimit -u 4096 # 最大进程/线程数
ulimit -c unlimited # core 文件大小
⚠️ 只在当前 shell 及其子进程生效,重启或退出后失效。
/etc/security/limits.conf这是最常用的方式。
vi /etc/security/limits.conf
示例:
* soft nofile 65535
* hard nofile 65535
appuser soft nproc 4096
appuser hard nproc 4096
格式:
用户/组 限制类型 资源类型 值
常见资源:
nofile:打开文件数nproc:进程数core:core 文件memlock:内存锁✅ 需要 PAM 支持(默认 CentOS 已开启)
/etc/security/limits.d/*.confCentOS 推荐把配置放到这里,避免修改主文件:
vi /etc/security/limits.d/20-nofile.conf
内容与 limits.conf 相同,优先级更高。
如果是 systemd 管理的服务,limits.conf 不一定生效。
vi /usr/lib/systemd/system/nginx.service
在 [Service] 段加入:
[Service]
LimitNOFILE=65535
LimitNPROC=4096
然后:
systemctl daemon-reload
systemctl restart nginx
vi /etc/systemd/system.conf
DefaultLimitNOFILE=65535
DefaultLimitNPROC=4096
修改后重启系统生效。
有些限制需要改内核参数:
vi /etc/sysctl.conf
fs.file-max = 1000000
生效:
sysctl -p
ulimit -a
或服务中查看:
cat /proc/<pid>/limits
❓ limits.conf 不生效?
LimitNOFILEpam_limits.so如果你能说明:
我可以给你更精确的配置示例。