zoukankan      html  css  js  c++  java
  • nginx Too many open files

    在使用Nginx做转发时遇到了连接不上的情况,查看error日志发现一堆的Too many open files报错

    2020/06/10 12:47:49 [crit] 21453#21453: *77340 open() "/usr/share/nginx/html/50x.html" failed (24: Too many open files), client: 58.244.114.249, server: _, request: "POST /rest/user/version/ HTTP/1.1", upstream: "http://localhost:6088/rest/version/", host: "xxx.cn"
    

    一、文件的限制

    首先想到的是linux中的文件限制,因为nginx配置中用的是user nginx,所以需要切换到nginx账号下查看限制

    1. 切换账号

    su - nginx
    

    如果出现This account is currently not available错误,是nginx账号不允许登录,使用usermod -s /bin/bash nginx设置一下就行了,详见This account is currently not available

    2. 查看文件限制

    ulimit -Hn   # 硬
    ulimit -Sn    # 软
    

    结果发现ulimit值都是65535,感觉问题不在这。
    如果ulimit值不够大时,可以用修改/etc/security/limits.conf配置文件,修改或添加

    # 配置nginx用户文件限制
    nginx soft nofile 65535
    nginx hard nofile 65535
    
    # 配置所有用户文件限制
    * soft nofile 65535
    * hard nofile 65535
    

    这里需要重启nginx才会生效

    二、Nginx配置限制

    排除了系统的文件限制,可能就是Nginx自身配置导致的了。

    # vim /etc/nginx/nginx.conf  这里为nginx配置文件
      
    worker_rlimit_nofile 65535;       //添加  
      
    events {  
        worker_connections 20480;   //修改  
    }  
    

    重启nginx或reload重新加载配置就可以了。



    作者:岑吾
    链接:https://www.jianshu.com/p/ef574406c1a5
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    python字符串相关的函数
    令人惊奇的gdb和pstack
    map的正确删除方式
    论道
    自动锁
    delete数组引发的core分析
    linux_硬链接和软链接区别
    vmware的卸载
    vmware + opensuse windows如何远程登录到suse上
    [置顶]援引个人新浪博客
  • 原文地址:https://www.cnblogs.com/cxd4321/p/14659684.html
Copyright © 2011-2022 走看看