在 CentOS 中修改 ulimit(用户资源限制)通常有以下几种方式,具体取决于你是临时修改还是永久修改,以及作用范围是当前会话还是所有用户/服务。
直接在终端执行:
ulimit -n 65535 # 修改打开文件数
ulimit -u 4096 # 修改最大进程数
ulimit -a # 查看当前所有限制
⚠️ 只在当前 shell 及子进程中生效,重启或重新登录后失效。
/etc/security/limits.confvi /etc/security/limits.conf
在文件末尾添加(示例):
* soft nofile 65535
* hard nofile 65535
* soft nproc 4096
* hard nproc 4096
说明:
* 表示所有用户(也可写具体用户名,如 www)soft:软限制(警告)hard:硬限制(最大)nofile:打开文件数nproc:进程数✅ 重新登录后生效。
如果是 systemd 管理的服务(如 nginx、mysql),limits.conf 可能不会生效。
systemctl edit nginx
添加:
[Service]
LimitNOFILE=65535
LimitNPROC=4096
然后:
systemctl daemon-reload
systemctl restart nginx
vi /etc/systemd/system.conf
修改:
DefaultLimitNOFILE=65535
DefaultLimitNPROC=4096
systemctl daemon-reexec
某些情况下还需调整内核参数:
sysctl -w fs.file-max=100000
永久生效:
echo "fs.file-max = 100000" >> /etc/sysctl.conf
sysctl -p
ulimit -n
cat /proc/<pid>/limits
如果你能说明:
我可以给你更精确的配置示例。