首页/系统/信创系统运维速查/句柄耗尽(Too many open files)
常见问题65 条

句柄耗尽(Too many open files)

应用报 Too many open files:完看进程实际句柄数与各层上限,区分上调上限与处理泄漏,systemd 服务需用 drop-in 设置。

信创系统运维速查系统更新于 2026-10-12

判断

判断
cat /proc/<PID>/limits | grep -i 'open files'
ls /proc/<PID>/fd | wc -l                   # 当前实际句柄数
cat /proc/sys/fs/file-nr                    # 系统级已分配与上限
ulimit -n                                   # 当前会话上限

调整

调整
ulimit -n 65535                             # 会话级示例
# systemd 服务用 drop-in(limits.conf 对服务不生效):
systemctl edit app-web
# [Service]
# LimitNOFILE=65535
systemctl daemon-reload && systemctl restart app-web
上调上限只是止血:句柄持续增长要按类型统计(lsof -p <PID>),排查 socket 与文件句柄泄漏。

易错点

  • systemd 服务不读 limits.conf:需要 LimitNOFILE 等 drop-in 设置
  • 只调上限不看增长曲线:泄漏会把新上限再次吃满

数据来源与参考

  • man 2 getrlimit
  • man 5 limits.conf
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌