PHP-FPM – 上游提前closures连接,同时读取响应头

已经看到了同样的问题 – 上游过早closures连接,而从上游读取响应头,客户端但是,正如Jhilke Dai说,它根本没有解决,我同意。 在nginx + phpFPM安装上有同样的确切错误。 当前软件版本:FreeBSd9.1上的nginx 1.2.8 php 5.4.13(cli)。 实际上,隔离这个错误,并确保它发生时试图导入大文件,大于3 MB到MySQL通过phpMyadmin。 当达到30秒的限制时,还计算后端closures连接。 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 – 没有效果。

我有这个相同的问题,经常在我的开发机器(OSX + nginx + php-fpm)上随机获得502 Bad Gateway,并通过更改/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服务。

这个设置是基于我在这里找到的:[ https://bugs.php.net/bug.php?id=63395%5D

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

另外,在PHP-FPM中降低日志级别,可能会有一些类型的警告,信息或调试跟踪,可以给你一些信息。

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