OSError: [Errno 24] Too many open files
服务器提示:
OSError: [Errno 24] Too many open files socket.accept() out of system resource
定位问题:
使用 lsof 查找打开文件较多的进程(该命令会按进程 ID 统计打开的文件数量,并按数量降序排列)
lsof -n | awk '{print $2}' | sort | uniq -c | sort -nr | more

-
113047 2032表示进程 ID 为 2032 的进程打开了 113,047 个文件描述符。 -
2184 2434626表示进程 ID 为 2434626 的进程打开了 2,184 个文件描述符。
查看该进程的详细信息
使用以下命令查看该进程的详细信息:
ps -ef | grep 2032
或者
pstree -p 2032
到这里基本能看出来啥问题了
其他:
查看特定进程的文件描述符使用情况
ls /proc/<PID>/fd | wc -l # 统计指定进程的文件描述符数量[^44^]
查看系统级文件描述符限制和使用情况
cat /proc/sys/fs/file-max # 查看系统允许的最大文件描述符数量[^44^] cat /proc/sys/fs/file-nr # 查看当前已使用的文件描述符数量[^44^]
查看当前用户或进程的文件描述符限制
ulimit -n # 查看当前用户的文件描述符软限制[^45^]

浙公网安备 33010602011771号