ping: socket: Too many open files in system 文件句柄过多解决方案
1、检查当前文件描述符使用情况
# 查看系统全局已用/最大文件描述符 cat /proc/sys/fs/file-nr # 输出示例:1234 0 100000 # 分别表示:已分配FD数 | 未使用FD数 | 系统最大FD数
如果已分配FD数接近最大值,说明资源已耗尽。
2、定位泄漏进程
# 统计各进程占用的FD数量(需root权限)
lsof -n | awk '{print $1,$2}' | sort | uniq -c | sort -nr | head
# 或直接查看占用FD最多的进程
ps aux | awk '{print $2}' | xargs -I {} sh -c 'echo {} $(ls /proc/{}/fd/ 2>/dev/null | wc -l)' | sort -k2 -nr | head
重点关注:FD数量异常高的进程(如超过1万)。
3、临时增加系统限制(缓解问题)
# 临时提高系统全局限制(重启失效) echo 200000 > /proc/sys/fs/file-max # 临时提高用户级限制(需root) ulimit -n 100000
4、持久化调整限制(修复后)
# 修改系统全局限制(永久生效)
echo "fs.file-max = 1000000" >> /etc/sysctl.conf
sysctl -p
# 修改用户级限制(如/etc/security/limits.conf)
echo "* soft nofile 100000" >> /etc/security/limits.conf
echo "* hard nofile 200000" >> /etc/security/limits.conf

浙公网安备 33010602011771号