Ulimit (用户资源限制) 是 Linux 系统中用于控制用户进程资源使用的重要机制。常见问题包括:
# 查看当前用户所有限制
ulimit -a
# 查看特定限制(如打开文件数)
ulimit -n
# 修改打开文件数限制
ulimit -n 65536
# 修改进程数限制
ulimit -u unlimited
sudo vi /etc/security/limits.conf
# 添加类似内容(示例为将用户user1的文件描述符限制设为65536)
user1 soft nofile 65536
user1 hard nofile 65536
# 对所有用户设置
* soft nofile 65536
* hard nofile 65536
sudo vi /etc/security/limits.d/90-custom.conf
添加所需限制配置
对于 systemd 管理的服务,需要在服务文件中设置:
sudo systemctl edit <service-name>
# 添加以下内容
[Service]
LimitNOFILE=65536
LimitNPROC=65536
然后重启服务:
sudo systemctl daemon-reload
sudo systemctl restart <service-name>
# 查看系统级文件描述符限制
cat /proc/sys/fs/file-max
# 临时修改系统级限制
sudo sysctl -w fs.file-max=2097152
# 永久修改 - 添加到/etc/sysctl.conf
echo "fs.file-max = 2097152" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
检查进程实际限制:
cat /proc/<pid>/limits
查看当前打开文件数:
lsof -u <username> | wc -l
检查日志:
journalctl -xe
dmesg | tail
确保修改后重新登录:ulimit 修改通常需要重新登录才能生效
检查 pam_limits 是否加载:
grep pam_limits /etc/pam.d/*
希望这些解决方案能帮助您解决 ulimit 相关问题。如需针对特定场景的更详细指导,请提供更多错误信息和系统环境细节。