首页/系统/Linux 运维命令速查/文件描述符上限与调整
本包目录(613 条)
文件与目录76 条文本处理77 条网络命令82 条进程与作业69 条磁盘与文件系统51 条用户与权限44 条日志与排查40 条systemd 与服务42 条包管理34 条
性能与监控48 条
定时任务与计划50 条

文件描述符上限与调整

高并发服务常见隐性瓶颈:Too many open files。三层限制(systemd LimitNOFILE / limits.conf / 内核 fs.file-max)各有边界,逐层核对才有效。

Linux 运维命令速查系统更新于 2026-10-12
用途排查与调整 fd 上限
三层单元/登录会话/内核
核对ulimit -n / /proc/PID/limits)

现状核对

现状核对
ulimit -Sn; ulimit -Hn                      # 当前会话软/硬限
cat /proc/$(pgrep -f app.jar | head -1)/limits | grep -i 'open files'
cat /proc/sys/fs/file-max; cat /proc/sys/fs/nr_open

调整

调整
# systemd 服务(推荐)
# [Service]
# LimitNOFILE=65535
sudo systemctl edit myapp && sudo systemctl restart myapp

# 登录会话 /etc/security/limits.conf
# * soft nofile 65535
# * hard nofile 65535

# 内核级
sudo sysctl -w fs.file-max=200000
容器内还受 runc/containerd 配置与宿主的双重限制;K8s 用 pod securityContext 或节点级配置。

易错点

  • limits.conf 对 systemd 服务不生效:服务走 unit 的 LimitNOFILE,两套体系别混淆
  • 只调软限不调硬限会被系统上限压制:确认最终 /proc/PID/limits 生效值

数据来源与参考

  • man 5 limits.conf
  • man 5 systemd.exec(LimitNOFILE)
  • man 5 proc(limits)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌