Nginx 30421#0: accept4() failed (24: Too many open files)

报错信息:

  30421#0: accept4() failed (24: Too many open files)

1,根据排查很容易了解到是文件连接数太多了,网上很多教程都是叫你去修改句柄数但是查了下我的句柄数有6万多,并且我只是访问单个文件不存在并发的问题

  [root@izj6c3njvldcpf6rgj4srvz projects]# ulimit -n
  65535

2,既然能够访问到文件了,那么我怀疑不是我的nginx配置有问题,当时的用的是默认配置如下:

  server {
    listen       80;

    server_name  www.superlei.cn;

    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    root    /projects;

    location / {
       index  index.php index.htm index.html;
    #   autoindex  off;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /projects;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    location ~ \.php$ {
        proxy_pass   http://127.0.0.1;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #

     #PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置.
    location ~ .php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

这时候看到我的反向代理是开着的proxy_pass ,仔细一看问题就来了,当有进程访问的时候反向代理的配置又会把它丢给127.0.0.1:80端口去处理,这样就造成了一个死循环于是就出现了我们一开始遇到的那个问题,此时只需要把反向处理的接口替换成其他的,或者注释掉反向代理问题就解决了。

     # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    location ~ \.php$ {
        proxy_pass   http://127.0.0.1:8084;
    }

你可能感兴趣的:(Nginx 30421#0: accept4() failed (24: Too many open files))