【Linux】Too many open files

2023-11-08  本文已影响0人  放纵不基
# systemctl  status rinetd
● rinetd.service - Rinetd Daemon
   Loaded: loaded (/etc/systemd/system/rinetd.service; enabled; vendor preset: disabled)
   Active: active (running) since 三 2023-09-20 00:11:32 CST; 1 months 20 days ago
  Process: 10527 ExecStart=/usr/local/rinetd/sbin/rinetd -c /usr/local/rinetd/etc/rinetd.conf (code=exited, status=0/SUCCESS)
 Main PID: 10528 (rinetd)
   CGroup: /system.slice/rinetd.service
           └─10528 /usr/local/rinetd/sbin/rinetd -c /usr/local/rinetd/etc/rinetd.conf

10月 24 20:12:19 server rinetd[10528]: accept(6): Too many open files
10月 24 20:12:19 server rinetd[10528]: accept(6): Too many open files
10月 24 20:12:19 server rinetd[10528]: accept(6): Too many open files
10月 24 20:12:19 server rinetd[10528]: accept(6): Too many open files
10月 24 20:12:19 server rinetd[10528]: accept(6): Too many open files
10月 24 20:12:19 server rinetd[10528]: accept(6): Too many open files
10月 24 20:12:19 server rinetd[10528]: accept(6): Too many open files
10月 24 20:12:19 server rinetd[10528]: accept(6): Too many open files
10月 24 20:12:19 server rinetd[10528]: accept(6): Too many open files
10月 24 20:12:19 server rinetd[10528]: accept(6): Too many open files

根据输出,我们可以进行以下详细解读:

综上所述,该输出提供了 Rinetd Daemon 服务的状态信息以及出现的错误信息。要解决错误,可能需要调整系统的文件描述符限制。

# ulimit  -n
1048576

根据输出,ulimit -n 命令显示当前用户的文件描述符限制为 1048576。文件描述符限制指定了一个进程可以打开的文件数的最大数量。
在这种情况下,当前用户可以打开的文件数是 1048576。这个限制通常足够满足大多数应用程序的需要。

注意:这个限制是针对当前用户的,其他用户可能有不同的限制。如果你是在 root 用户下运行 ulimit -n 命令,那么这个限制是系统的全局限制。

如果你的 Rinetd 服务在运行时出现了 "Too many open files" 的错误,那么可能需要检查服务的配置文件和代码,确保正确地关闭和释放文件描述符。另外,如果你的服务确实需要打开大量的文件描述符,那么你可以考虑增加文件描述符限制。但请注意,增加文件描述符限制可能会对系统资源产生影响,因此应根据具体需求和系统资源进行权衡。

为什么能开1048576, 还显示Too many open files ?

尽管文件描述符限制可以设置为1048576,但仍可能出现"Too many open files"错误的原因有以下几个可能性:

  1. 资源限制:尽管文件描述符限制已设置为1048576,但系统的其他资源限制(例如内存、CPU等)可能已达到其限制。在处理大量连接时,这些资源的限制可能会导致无法打开更多文件。

  2. 服务配置:服务本身可能有配置问题,导致无法正确地关闭和释放文件描述符。如果服务没有正确地管理文件描述符,可能会导致文件描述符被耗尽,即使限制设置为较高的值。

  3. 文件描述符泄露:服务代码中可能存在文件描述符泄露的问题。文件描述符泄露指的是在使用完文件描述符后,没有正确地关闭或释放它们,导致文件描述符逐渐积累,最终耗尽系统资源。

为了解决这个问题,你可以采取以下步骤:

  1. 检查服务的配置文件和代码,确保正确地关闭和释放文件描述符。确保在使用完文件描述符后,及时关闭它们。

  2. 检查系统的其他资源限制,如内存和CPU等,确保它们未达到限制。如果其他资源限制已达到,可能需要优化系统配置或增加资源。

  3. 进行文件描述符泄露的排查。检查服务代码,确认是否有文件描述符未正确关闭的问题。使用工具如lsof等可以帮助你查看当前系统上打开的文件描述符列表,以便排查泄露问题。

  4. 如果问题仍然存在,可以尝试增加文件描述符限制。但请注意,增加文件描述符限制可能会对系统资源产生影响,因此应谨慎考虑,并根据具体需求和系统资源进行权衡。

参考

进程与句柄
https://mp.weixin.qq.com/s/f0TIqGqcZFnL4M1VEAHHeA

JAVA程序句柄不释放导致删除文件磁盘空间不释放问题处理
https://www.jianshu.com/p/832f14468291

如何查看进程的句柄占用,排查处理句柄泄漏问题
https://www.jianshu.com/p/5666a4db5ae5

特定版本Golang应用内存泄露问题处理
https://www.jianshu.com/p/05c05c56e33c

Kubernetes 集群文件描述符测漏了
https://mp.weixin.qq.com/s/e3T91Zocui-vO9hUbZe87Q

JAVA程序一次句柄泄露问题分析
https://mp.weixin.qq.com/s/TClhsvwl5jvNnYL2sQ59FA

线上 udp 客户端请求服务端客户端句柄泄漏问题
https://mp.weixin.qq.com/s/1dZtib-AkUuEcGNwAFzDww

记一次定位fd泄漏问题
https://mp.weixin.qq.com/s/MhYDPBG-imPIle5gidD_Rw

记一次业务机器文件句柄占用过高问题
https://mp.weixin.qq.com/s/Se4nQKDo-O-xOmWEsT1khg

文件描述符(fd)泄漏排查奏是这么简单
https://mp.weixin.qq.com/s/iLOkfsJrNWodYSV60Jalyw

上一篇 下一篇

猜你喜欢

热点阅读