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^]

 

 

 

 

  

posted @ 2025-02-17 18:08  一杯热水  阅读(214)  评论(0)    收藏  举报