• socket() failed (24: Too many open files) while connecting to upstream, client


    一、这个错误通常是因为文件句柄数目超过系统限制导致的。要解决这个问题,您可以尝试以下几个步骤:

    1. 调整系统文件句柄限制:您可以通过修改/etc/security/limits.conf文件中的nofile参数来增加系统文件句柄的最大数目。将nofile的值增加到更高的数值,如100000。

    2. 优化Nginx配置:请确保您的Nginx配置正确,并适应您网站的负载和访问量。您可以调整Nginx的worker_process和worker_connection参数,以适应当前负载情况。

    3. 检查您的应用程序:检查您的应用程序是否有任何可能导致文件句柄过多的问题。尝试定位并修复任何可能出现的资源泄漏或无效的打开文件句柄。

    4. 使用监控工具进行故障排除:使用系统监控工具来确定具体是哪个进程打开了过多的文件句柄。这样您可以更精确地找到问题所在,并采取相应的解决措施

    二、如何查看liunx句柄

    1. 查看当前系统的文件句柄限制:

      • 对于Linux系统,您可以使用命令 ulimit -n 查看当前的文件句柄限制。
    2. 查看当前已打开的文件数:

      • 对于Linux系统,您可以使用命令 lsof | wc -l 查看当前已打开的文件数。
    3. 查看特定进程的文件句柄使用情况:

      • 对于Linux系统,您可以使用命令 lsof -p | wc -l 查看指定进程的文件句柄使用数目,将  替换为实际的进程ID。

    三、如何解决

    1. 打开/etc/security/limits.conf文件:

      vi /etc/security/limits.conf

    2. 在文件末尾添加以下行,设置新的文件句柄限制:

      *    soft    nofile    10000
      *    hard    nofile    10000

    3. 保存并关闭文件。

    • 软限制(soft limit):软限制是指当前用户或进程可以自行增加或减少的文件句柄的数量。软限制只对当前登录的会话有效,仅在该会话中有效。
    • 硬限制(hard limit):硬限制是指系统对文件句柄数量的最大限制。硬限制是软限制的上限,只有管理员可以调整硬限制。

    这将将文件句柄限制增加到10000个。然后,您可以重启系统或者重新登录以使更改生效。

    四、如果无法解决修改nginx配置

    修改 nginx.conf,增加worker_rlimit_nofile 

    #指定一个nginx进程可以打开的最多文件描述符数目
    worker_rlimit_nofile 65535;

    五、另外网上还有一种说法

  • 相关阅读:
    Vue2 测试解决方案
    Spirng Cloud Gateway详解
    支付宝支付模块开发
    spring boot 使用AOP+自定义注解+反射实现操作日志记录修改前数据和修改后对比数据,并保存至日志表
    网络协议学习DAY1
    有哪些好用的上网行为管理软件?(上网行为管理软件功能好的软件推荐)
    线程池源码解析 4.runWorker() 方法
    Python协程(asyncio)(三)异步应用对象
    【CSS】css弹性布局、CSS hack_08
    A-Level经济例题解析及练习A monopoly’s revenue
  • 原文地址:https://blog.csdn.net/No_overtime_apes/article/details/133100198