【发布时间】:2016-07-06 14:19:21
【问题描述】:
我的服务器上安装了 php-fpm 和 nginx 堆栈。
我正在运行一个 JS 应用程序,它会触发一个 AJAX 请求,该请求在内部使用 curl 连接到第三方服务。该服务需要很长时间才能响应,例如大约 150 秒。
现在,当我连接到另一个浏览器选项卡上的同一页面时,它甚至不会返回触发 ajax 请求的页面上的 javascript 代码。基本上所有后续请求都会继续加载,直到 curl 返回响应或超时。
在这里,我将 proxy_read_timeout 设置为 300 秒。
我想知道为什么 nginx 持有资源而不为其他客户端提供服务。
【问题讨论】:
-
您有多少 PHP5-FPM 工作人员正在运行? JS 应用程序是否也从 PHP 脚本返回?你的 NGINX 配置看起来如何?
-
从一个php脚本返回的Js应用有4个php-fpm worker
-
nginx conf worker_connection 1024 worker_processes 5 sendfile on; tcp_nopush 开启; tcp_nodelay 开启; keepalive_timeout 65;
-
如果是这种情况,那么您的请求不太可能正在等待 FPM 处理。其他东西正在挂起它。您应该启用 FPM 慢请求日志,并在长 AJAX curl 请求之后的后续请求期间检查 nginx 访问/错误日志。
-
当然。我将启用 FPM 慢速请求日志