若需快速解决当前会话的资源不足问题(如打开文件数过多、进程数超限),可使用ulimit命令临时修改:
ulimit -a(显示软/硬限制及对应资源类型,如nofile为文件描述符数量、nproc为进程数)。ulimit -n 4096(将软限制设为4096,允许当前会话打开最多4096个文件);若需同时调整硬限制(系统允许的最大值),可执行ulimit -H -n 8192(硬限制通常需管理员权限)。ulimit -u 2048(将当前用户的最大进程数设为2048)。若需长期解决资源不足问题,需修改系统配置文件,使设置永久生效:
/etc/security/limits.conf(核心配置文件):sudo nano /etc/security/limits.conf)打开文件,在末尾添加以下内容(以所有用户为例):* soft nofile 4096 # 所有用户的文件描述符软限制(可自行修改)
* hard nofile 8192 # 所有用户的文件描述符硬限制
* soft nproc 2048 # 所有用户的进程数软限制
* hard nproc 4096 # 所有用户的进程数硬限制
若需针对特定用户(如john),可将*替换为用户名:john soft nofile 8192。/etc/pam.d/common-session和/etc/pam.d/common-session-noninteractive文件,在末尾添加session required pam_limits.so(确保登录时会话应用limits.conf中的设置)。若问题出现在systemd管理的服务(如Nginx、MySQL),需单独修改服务的资源限制:
/etc/systemd/system.conf(系统级默认配置)和/etc/systemd/user.conf(用户级默认配置),添加或修改以下行:DefaultLimitNOFILE=4096 # 默认文件描述符限制
DefaultLimitNPROC=2048 # 默认进程数限制
.service文件(如/etc/systemd/system/nginx.service),在[Service]段添加:ExecStartPre=/bin/ulimit -S -n 4096 # 服务启动前设置软限制
ExecStartPre=/bin/ulimit -H -n 8192 # 服务启动前设置硬限制
sudo systemctl daemon-reload(重载配置),然后sudo systemctl restart <服务名>(如nginx)使设置生效。部分资源限制(如系统最大文件描述符数)需通过内核参数调整:
/etc/sysctl.conf:fs.file-max = 65536 # 系统最大文件描述符数(全局限制)
sudo sysctl -p(读取并应用sysctl.conf中的设置)。调整完成后,需通过以下命令确认设置是否成功:
ulimit -a(重点关注nofile、nproc等字段的值是否符合预期)。cat /proc/sys/fs/file-max(应与sysctl.conf中的fs.file-max值一致)。cat /proc/$(pgrep nginx | head -1)/limits(查看nginx进程的实际限制)。--ulimit参数传递设置(如docker run --ulimit nofile=4096:8192 ...)。