由于某种原因,每当处理缓慢的请求时,nginx 不会接受任何新请求。一个简单的测试是编写一个带有脚本,sleep()
并从不同的浏览器/设备调用该脚本。
第一个请求被接受,然后第二个请求等待,并且只有第一个请求完成后才会被接受。有办法解决这个问题吗?
nginx.conf
user nobody nobody;
worker_processes 1;
error_log /var/log/nginx-error.log notice;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
# General settings
index index.html index.php;
sendfile on;
server_tokens off;
client_max_body_size 10M;
# TCP options
tcp_nodelay on;
tcp_nopush on;
# NginxHttpGzipModule
gzip on;
gzip_buffers 16 8k;
gzip_comp_level 5;
gzip_disable "MSIE [1-6].(?!.*SV1)";
gzip_http_version 1.0;
gzip_min_length 0;
gzip_proxied any;
gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml application/xml+rss;
gzip_vary on;
include /usr/local/nginx/sites/*.conf;
}
答案1
看来我的问题是由于 php-fpm 设置 pm.* 造成的。nginx 未处理请求的原因是没有空闲的 php-fpm 进程来处理请求。从技术上讲,nginx 接受了请求,但正在等待空闲的 php-fpm 进程。