NGINX:保持活动请求静态内容好 – 保持活动请求到php-fpm请求挂起,直到keepalive_timeout达成

仅供参考,我已经发布的最初的问题是在这里,没有必要读,因为我最初的方式:

https://serverfault.com/questions/427296/nginx-php-fpm-strange-issue-when-trying-to-display-images-via-php-gd-readf

我能够跟踪它,以保持活力。

请记住,当我提到这个问题时,我的意思是USER < – > NGINX保持活着。 NOT NGINX < – > BACKEND(在这种情况下是php-fpm)。

场景三是问题场景,我刚刚列入了一个和两个,以明确我已经完成了所有必需的testing。

所以,这里正是发生了什么事情:

scheme一[启用保持活动状态]:

A)请求静态内容[基于非fastcgi请求者,简单文件系统访问]

B)保持活着

C)内容发送没有问题,100%的时间

scheme二[保持活动禁用状态]:

A)请求dynamic的基于php-fpm的内容

B)保持活着

C)内容发送没有问题,100%的时间

情景三[保持活跃状态​​]:

A)请求dynamic的基于php-fpm的内容

B)保持活着

C)发送内容,但浏览器将挂起“加载状态”,直到达到keepalive_timeout。 这种状态看起来不同的浏览器。 例如,Chrome会显示内容,但会在顶部浏览器中“旋转”。 在达到keepalive_timeout之后,即使内容实际显示正常,sping也会停止并且请求在debugging器中显示为红色。 在IE中,页面保持空白,直到达到活动超时时间,然后显示内容。 看一下IE开发者工具,看到内容在“蓝色”中占用“keepalive_timeout”秒,这在IE开发者工具箱里是“接收”的。

完全沉默,试图将conf恢复到最基本的forms,这仍然发生。

总结一下,在服务基于php-fpm的结果时,似乎存在某种与networking相关的问题(tcp / ip堆栈?)。

有任何想法吗?

这里可能有一两件事是错误的。

http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_keep_conn

syntax: fastcgi_keep_conn on | off; default: fastcgi_keep_conn off; context: http, server, location 

默认情况下,FastCGI服务器将在发送响应后立即closures连接。 当设置为该值时,nginx将指示FastCGI服务器保持连接打开。 这对于保持连接到FastCGI服务器的function来说是非常必要的。

要么

http://wiki.nginx.org/HttpUpstreamKeepaliveModule

 upstream default { server 10.0.0.1:80; keepalive 1024 single; } 

为上游启用保持连接。

Num指定之前保持打开的最大连接数,如果达到最大值,它将closures最近最less使用的连接。

单身人士将所有事物视为单一主人。 有了这个标志连接到不同的后端被视为平等。

两者都适用于Nginx 1.1.4或更高版本