长时间运行的请求会阻止所有后续请求

长时间运行的请求会阻止所有后续请求

由于某种原因,每当处理缓慢的请求时,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 进程。

相关内容