整理大阪服务器文件句柄(too many open files)耗尽的排查实战。
文件句柄耗尽会导致服务异常。以下是实战。
一、确认现象 - 报 Too many open files - 无法建立新连接或打开文件 - 服务间歇性异常
二、定位 1) ulimit -n 查看当前限制 2) cat /proc/<pid>/limits 看进程限制 3) lsof -p <pid> | wc -l 统计已用句柄 4) ls /proc/<pid>/fd | wc -l 5) 查看句柄类型分布
三、常见原因 1) 连接或文件未关闭(泄漏) 2) 默认 ulimit 偏低 3) 长连接过多 4) 定时任务或爬虫打开大量文件 5) TIME_WAIT 累积
四、处理 - 提高 ulimit(进程与系统级 file-max) - 修复未关闭的连接或文件 - 复用连接、设置超时 - 优化 TCP 参数(TIME_WAIT 复用)
五、优化 1) 连接池 2) 定期监控句柄数 3) 代码审查资源释放 4) 合理设置系统级上限
六、预防 - 句柄水位告警 - 上线前压测 - 配置统一管理
总结:句柄耗尽要先看 limits 与 /proc/<pid>/fd,再从泄漏、上限和连接管理逐项修复。