NGINX / PHP-FPM:Ajax 第一个请求很慢,接下来的请求很好

NGINX / PHP-FPM:Ajax 第一个请求很慢,接下来的请求很好
  • 该 CMS 是Elxis,源自 Joomla(PHP)的一个变体。
  • 服务器正在nGinx运行PHP-FPM
  • 所有请求最终都会被记录并执行,但是!!!

通过 URL 栏触发特定请求时,请求会立即执行。但是,通过 ajax(通过 jQuery)触发时,同一请求的行为非常奇怪。

即:第一个请求(在媒体管理器上)要查看图片详细信息,将使用 Ajax 触发。它记录在浏览器上,但未记录在服务器上... 暂时还不行... 经过 40-50 秒后,请求出现在服务器上,然后立即得到响应。

后面的所有请求都会立即执行,没有问题。只有第一个请求比较粗糙。

我遇到麻烦了,因为没有任何地方记录任何错误:除了第一个请求到达服务器的滞后之外,一切看起来都很正常......

它不是路由(站点已经启动并且请求已被处理),它不是解析(IP 在我的 /etc/hosts 文件中)。

更糟糕的是,尝试在服务器上捕获数据包(tcpdump)没有任何输出:请求尚未到达...在客户端也尝试过:没有输出 - 至少 40 秒...

一切都在浏览器上,开发人员控制台没有显示任何错误,只是一个待处理的请求。

这些能给任何人带来一些印象吗?

The server:
nginx version: nginx/1.6.2
PHP 5.6.7-1 (cli)
PHP 5.6.7-1 (fpm-fcgi)

jQuery 版本 1.11
客户端:在 Firefox 39 (ubuntu) 和 Chromium 41 上进行了尝试

注意:我在 stackoverflow 上问过同样的问题,因为我无法清楚地确定这是否是代码或架构的问题……

答案1

我遇到了类似的问题,最终增加了 php-fpm 工作线程的数量。我在 www.conf (pool.d) 中使用了以下设置来解决我遇到的问题。我有一个分析服务器设置,用于跟踪页面浏览量,记录页面浏览量的 API 延迟了 15-20 秒。调整以下设置解决了我的问题,也许对您有帮助。

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

相关内容