Nginx PHP-FPM-上游在读取响应头时过早关闭连接

Nginx PHP-FPM-上游在读取响应头时过早关闭连接,nginx,apc,php,Nginx,Apc,Php,我已经看到了同样的问题- 但正如杰尔克·戴所说,这个问题根本没有解决,我也同意。 在nginx+phpFPM安装中获得了相同的精确错误。当前软件版本:FreeBSd9.1上的nginx 1.2.8 php 5.4.13(cli)。实际上,bit隔离了这个错误,并确保它是在尝试通过phpMyadmin将大于3MB的大文件导入mysql时发生的。还计算了当达到30秒限制时后端关闭连接的次数。 引发此错误的Nginx错误日志 [error] 49927#0: *196 upstream premat

我已经看到了同样的问题- 但正如杰尔克·戴所说,这个问题根本没有解决,我也同意。 在nginx+phpFPM安装中获得了相同的精确错误。当前软件版本:FreeBSd9.1上的nginx 1.2.8 php 5.4.13(cli)。实际上,bit隔离了这个错误,并确保它是在尝试通过phpMyadmin将大于3MB的大文件导入mysql时发生的。还计算了当达到30秒限制时后端关闭连接的次数。 引发此错误的Nginx错误日志

 [error] 49927#0: *196 upstream prematurely closed connection while reading response header from upstream, client: 7X.XX.X.6X, server: domain.com, request: "POST /php3/import.php HTTP/1.1", upstream: "fastcgi://unix:/tmp/php5-fpm.sock2:", host: "domain.com", referrer: "http://domain.com/phpmyadmin/db_import.php?db=testdb&server=1&token=9ee45779dd53c45b7300545dd3113fed"
我的php.ini限制也相应提高

upload_max_filesize = 200M
default_socket_timeout = 60
max_execution_time = 600
max_input_time = 600
my.cnf相关限额

max_allowed_packet = 512M
Fastcgi限制

location ~ \.php$ {
# fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_pass unix:/tmp/php5-fpm.sock2;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;

fastcgi_intercept_errors on;
fastcgi_ignore_client_abort on;
fastcgi_connect_timeout 60s;
fastcgi_send_timeout 200s;
fastcgi_read_timeout 200s;
fastcgi_buffer_size 128k;
fastcgi_buffers 8 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
试图更改fastcgi超时以及缓冲区大小,但没有帮助。 php错误日志没有显示问题,启用了所有通知,警告-没有任何有用的。
还尝试禁用APC-无效。

您的脚本计算需要多长时间?尝试在PHP和Nginx中设置巨大的超时,并在请求期间监视您的系统。然后调整您的值以优化性能

另外,降低PHP-FPM中的日志级别,可能有一些类型的警告、信息或调试跟踪可以提供一些信息


最后,要注意PHP-FPM中可用的子进程和进程的数量。也许Nginx正在挨饿,等待一个PHP-FPM子代出现。

我也遇到了同样的问题,在我的开发机器(OSX+Nginx+PHP-FPM)上频繁随机地获得了502个坏网关,并通过在/usr/local/etc/PHP/5.6/PHP-FPM.conf更改一些参数来解决:

我有以下设置:

 pm = dynamic
 pm.max_children = 10
 pm.start_servers = 3
 pm.max_spare_servers = 5
。。。并将其更改为:

pm = dynamic
pm.max_children = 10
pm.start_servers = 10
pm.max_spare_servers = 10
。。。然后重新启动php fpm服务


此设置基于我在此处找到的内容:[

有效!我到处寻找解决方案,这是我发现唯一有效的解决方案。