出于某种原因,只要缓慢的请求被处理,nginx就不会接受任何新的请求。 一个简单的testing是用一个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; }
看来我的问题是由于php-fpm设置pm。*。 为什么这些请求不是由nginx处理,是因为没有php-fpm进程空闲来处理请求。 从技术上讲,nginx接受了请求,但正在等待一个免费的php-fpm进程。