-
Linux服务器优化:打开文件数限制 (open files)
open files (-n) 1024
问题 :对于生产服务器/高并发应用,1024太小。
建议调整:
-
普通服务器:
65535 -
高并发服务器:
100000或更高# 临时调整 ulimit -n 65535 # 永久调整(在 /etc/security/limits.conf 添加) * soft nofile 65535 * hard nofile 65535
2.最大锁定内存 (max locked memory)
max locked memory (-l) 8192
问题 :8MB 对于使用大量内存锁定的应用(如数据库、缓存系统)可能不足。
建议:
# 调整到内存的合理比例,如512MB或1GB
ulimit -l unlimited # 或具体值如 524288 (512MB)
3. 栈大小 (stack size)
stack size (-s) 8192
问题 :8MB 对于某些需要深度递归或大型栈的应用可能不够。
建议:
ulimit -s unlimited # 或调整到 32768 (32MB)
应用场景建议
1. Web服务器(Nginx/Apache)
ulimit -n 65535
ulimit -l unlimited
2. 数据库(MySQL/PostgreSQL)
ulimit -n 65535
ulimit -l unlimited
ulimit -s unlimited
3. Java应用
# 在启动脚本中添加
ulimit -n 65535
ulimit -u 65535
4. 高并发服务器
# 在 /etc/sysctl.conf 中调整系统级别限制
fs.file-max = 2097152
fs.nr_open = 2097152
⚠️ 注意事项
-
root用户不受 limits.conf 限制,需要单独配置
-
修改后需要重新登录或重启服务
-
不要盲目设置为
unlimited,根据实际需求调整 -
使用
cat /proc/<PID>/limits查看进程的实际限制
📝 检查建议
调整后运行:
# 查看当前shell限制
ulimit -a
# 查看系统全局限制
cat /proc/sys/fs/file-max
建议根据您的具体应用类型选择合适的优化值。