报错信息:
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;
}