ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: fastcgi keep conn on и fastcgi finish request() в PHP


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: fastcgi keep conn on и fastcgi finish request() в PHP
  • From: "S.A.N" <nginx-forum@xxxxxxxx>
  • Date: Mon, 17 Feb 2014 13:21:03 -0500
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=selenium.jlkhosting.com; s=x; h=Date:Sender:From:References:In-Reply-To:Message-ID:Content-Transfer-Encoding:Content-Type:Subject:To; bh=gNT5YEkSt61KveEvIDlAzbbLvi61Ez1BefX4oevTED0=; b=ykoa+a8HIKPpdjfLYw2V7TxylyKA2SRl9CRi739D69dYMqJ2C+KgoiXKqf661/itxfkyZZiRi20eQbm8rOvxo7pxqholstzIg7YZGfTESAlB0GG/WjUE8bPuh5HSN051Jb5o4hnPMj9nbsHdMl2H0+5kA4y1aqUE2eqcFujFTSg=;
  • In-reply-to: <20140217143850.GU81431@mdounin.ru>
  • References: <20140217143850.GU81431@mdounin.ru>

> > Лог ошибки Nginx
> > [error] 7945#0: *5 upstream sent unexpected FastCGI record: 3 while
> reading
> > response header from upstream ...
> 
> Вы прислали FCGI_END_REQUEST, ничего не вернув клиенту, о чём 
> nginx и плачет.  Единственное, что он в данном случае может 
> сделать - это вернуть клиенту ошибку.

Это происходит только при выключенном fastcgi_keep_conn и keepalive, если их
выключить Nginx отлично отдает 200 статус без ошибок.


> > В upstreem кеше 8 конектов, ошибка появляется когда Nginx ждет от
> PHP-FPM
> > ответа в конекте который ещё не освободился, по моей логике PHP-FPM
> должен
> > ответить Nginx когда скрипт завершит работу (sleep(10)) но этого не
> > происходит и Nginx отдает 502 ошибку, судя по всему PHP-FPM после
> > освобождения конекта не смог обработать следующий запрос от Nginx в
> этом
> > конекте, подозреваю что функции fastcgi_finish_request() не
> рассчитана на
> > повторное использования конекта.
> > 
> > Или я что-то делаю не правильно?
> 
> После того, как запрос завершён с помощью FCGI_END_REQUEST (== 
> fastcgi_finish_request() в php), вы уже не сможете ничего вернуть 
> клиенту.
> 
> Так имеет смысл делать, когда вы хотите вернуть ответ, а потом 
> сделать ещё какую-то работу.  

Да именно так все и задумано, но Nginx отдает 502 ошибку.

>Мультиплексировать так несколько запросов в одном процессе php - не
получится.

Если я правильно понял, использовать keepalive конекта после
FCGI_END_REQUEST, не выйдет? 
И есть только два варианта, отказаться от keepalive (без него эта схема
работает) или отказаться от fastcgi_finish_request (без него работает
keepalive)

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,247661,247668#msg-247668

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.