> > Лог ошибки 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 [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
