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
 
posted @ 2025-08-14 16:07  LB_运维技术  阅读(54)  评论(0)    收藏  举报