Linux句柄数过多问题排查
一、检测句柄使用情况 1.查看系统限制单个进程限制ulimit -n 系统级总限制cat /proc/sys/fs/file-max 2.统计进程占用量查看指定进程lsof -p PID | wc -l 全局Top占用进程代码语言javascriptAI代码解释lsof -n | awk {print $2} | sort | uniq -c | sort -nr | head -n 10通过输出可快速定位句柄泄漏的进程。二、常见问题原因 1.资源未释放程序未正确关闭文件、Socket连接或连接如报错Too many open files 网络接口调用量剧增导致句柄累积尤其是HTTP长连接场景 2.配置限制过低ulimit -n设置的进程最大句柄数低于实际需求三、解决方案 临时调整 提升进程限制ulimit -n 65535 # 仅对当前会话有效需注意普通用户可能无法突破系统级硬限制永久调整修改用户级限制 编辑/etc/security/limits.conf添加代码语言javascriptAI代码解释* soft nofile 65535 * hard nofile 65535重启后生效调整系统级总限制修改/etc/sysctl.conf设置代码语言javascriptAI代码解释fs.file-max 2097152 fs.nr_open 2097152程序优化排查资源泄漏 结合lsof输出分析句柄类型如频繁出现CLOSE_WAIT状态的TCP连接使用jstack等工具检查Java线程堆栈若为Java程序监控工具 定时统计句柄数变化代码语言javascriptAI代码解释watch -n 60 lsof -p PID | wc -l绘制折线图观察增长趋势关联接口调用量