仅供参考,我已经发布的最初的问题是在这里,没有必要读,因为我最初的方式:
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或更高版本