【文件】Linux 内核优化实战 - fs.file-max

fs.file-max 参数总结

1. 定义与作用
  • 定义:Linux 系统内核参数,用于限制全系统所有进程可打开的文件句柄(文件描述符)的最大数量。
  • 核心作用
    • 防止文件句柄耗尽导致应用崩溃(如出现 “Too many open files” 错误)。
    • 平衡系统内存资源:每个文件句柄需占用内存(约 1KB~4KB),避免过度分配导致内存不足。
2. 默认值与计算方式
  • 动态计算:通常根据系统内存大小估算,公式为 file-max = (内存大小(KB)/10) * 2
    • 例:8GB 内存(8388608KB)默认约为 1677721。
  • 不同发行版差异
    • Red Hat 等系统默认可能为 4096 或 65535,具体需通过命令查看。
3. 查看当前值
  • 命令 1:通过 sysctl 查看
    sysctl -a | grep file-max  # 示例输出:fs.file-max = 98240
    
  • 命令 2:直接读取系统文件
    cat /proc/sys/fs/file-max
    
4. 修改方法
  • 临时修改(重启失效)
    sysctl -w fs.file-max=新值  # 例:sysctl -w fs.file-max=2000000
    
  • 永久修改
    1. 编辑配置文件:
      vi /etc/sysctl.conf
      
    2. 添加或修改参数:
      fs.file-max = 新值  # 例:fs.file-max = 2000000
      
    3. 使配置生效:
      sysctl -p
      
5. 确定合适值的步骤
  1. 评估当前使用情况
    cat /proc/sys/fs/file-nr  # 查看已分配/使用的句柄数
    watch -d 'cat /proc/sys/fs/file-nr | cut -f2 -d" "'  # 监控峰值
    
  2. 分析应用需求
    • lsof -p <PID> | wc -l 查看单个进程句柄数,结合并发进程数估算总需求。
  3. 内存限制计算
    • 单个句柄约占 1KB~4KB,总内存需满足 fs.file-max * 单句柄内存 ≤ 系统空闲内存
  4. 参考设置
    • 通用系统:物理内存的 1%~5%(如 8GB 内存设为 83886~419430)。
    • 高并发服务器:500000~2000000(需结合内存测试)。
  5. 测试与调整
    • 先临时修改,通过 free -hvmstat 监控内存和负载,再永久配置。
6. 注意事项
  • 用户级限制:确保 ulimit -n(用户句柄上限)不超过 fs.file-max,可修改 /etc/security/limits.conf
  • 避免过度配置:过大值可能导致内存浪费或系统不稳定,建议从 500000 开始逐步调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值