2013-05-04 6 views
9

Già visto questa stessa domanda - upstream prematurely closed connection while reading response header from upstream, client Ma come Jhilke Dai ha detto che non è stato risolto affatto e sono d'accordo. Ottenuto lo stesso errore esatto sull'installazione di nginx + phpFPM. Versioni attuali del software: nginx 1.2.8 php 5.4.13 (cli) su FreeBSd9.1. In realtà un po 'isolato questo errore e sicuramente è successo quando si è tentato di importare file di grandi dimensioni, superiori a 3 mbs in mysql tramite phpMyadmin. Contato anche quella connessione di chiusura del backend quando il limite di 30 secondi è stato raggiunto. Nginx log degli errori gettando questoPHP-FPM - connessione a monte prematuramente chiusa durante la lettura dell'intestazione di risposta

[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" 

miei limiti php.ini sollevato conseguenza

upload_max_filesize = 200M 
default_socket_timeout = 60 
max_execution_time = 600 
max_input_time = 600 

relative my.cnf limite

max_allowed_packet = 512M 

limiti 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; 

Provato per cambiare i timeout di Fastcgi e le dimensioni del buffer, non è aiutato. log errore php non mostra problema, abilitato tutte le comunicazioni, avviso - niente di utile. Anche provato disabilitare APC - nessun effetto.

risposta

0

Quanto tempo impiega il tuo script per calcolare? Prova a impostare, sia in PHP e Nginx HUGE timeout e monitorare il sistema durante la richiesta. Quindi sintonizzare i valori per ottimizzare le prestazioni.

Inoltre, abbassa il livello di registro in PHP-FPM, forse c'è qualche tipo di avvertimento, informazioni o traccia di debug che può darti qualche informazione.

Infine, fai attenzione al numero di bambini e processi disponibili in PHP-FPM. Forse Nginx sta morendo di fame, aspettando che un bambino di PHP-FPM sia disponibile.

1

Ho avuto lo stesso problema, ho ricevuto 502 Bad Gateway frequentemente e in modo casuale nella mia macchina di sviluppo (OSX + nginx + php-fpm) e l'ho risolto modificando alcuni parametri in /usr/local/etc/php/5.6/ php-fpm.conf:

ho avuto questa impostazioni:

pm = dynamic 
pm.max_children = 10 
pm.start_servers = 3 
pm.max_spare_servers = 5 

... e li cambiato in:

pm = dynamic 
pm.max_children = 10 
pm.start_servers = 10 
pm.max_spare_servers = 10 

... e quindi riavviato il servizio php-fpm.

Queste impostazioni sono basate su ciò che ho trovato qui: [https://bugs.php.net/bug.php?id=63395]