2013-05-04 69 views
9

已经看到了同样的问题 -​​ 但是,正如Jhilke Dai所说,它根本没有解决,我同意。 在nginx + phpFPM安装上有同样的确切错误。当前的软件版本:FreeBSd9.1上的nginx 1.2.8 php 5.4.13(cli)。实际上,它试图通过phpMyadmin将大于3 MB的大文件导入到mysql中,实际上隔离了这个错误并确定它发生了。在达到30秒的限制时,还要计算后端关闭连接。 Nginx的错误日志中抛出这个PHP-FPM - 上游过早关闭连接,同时读取响应头

[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 - 没有效果。

回答

0

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

此外,降低PHP-FPM日志级别,也许有一些类型的警告信息或调试跟踪,可以给你一些信息。

最后,小心儿童和PHP-FPM可用进程数。也许Nginx正在挨饿,等待一个PHP-FPM孩子可用。

1

我有同样的问题,得到了502网关错误频繁和随机在我的机器(OSX +的nginx + PHP-FPM),并通过改变/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]

相关问题