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

Maxim Dounin mdounin на mdounin.ru
Пт Янв 18 22:29:28 UTC 2019


Hello!

On Fri, Jan 18, 2019 at 01:12:08PM -0500, Vladislavik wrote:

> Подтверждаю проблему в последних версиях 2019 года присутствует. 
> При включенных fastcgi_keep_conn и keepalive, если скрипт завершился через
> fastcgi_finish_request() и продолжает выполнять работу в фоне, то следующий
> запрос другого клиента к php-fpm может получить 502 ошибку, придя по тому же
> коннекту, уже судя по всему не сможет подключиться к php-fpm, тк тот все еще
> выполняет прошлую задачу. Вопрос, почему запрос пихается на не завершенный
> процесс.

Когда я на это смотрел в последний раз, php не умел корректно 
работать с keepalive-соединениями при использовании 
fastcgi_finish_request(), и посылал FCGI_END_REQUEST два раза - 
один раз после вызова fastcgi_finish_request(), второй раз после 
завершения работы в фоне.  Вторая отправка FCGI_END_REQUEST 
ожидаемо приводила к 502, если к тому моменту nginx успевал 
отправить в соединение очередной запрос.  Подробнее тут:

http://mailman.nginx.org/pipermail/nginx-devel/2014-July/005539.html

Я не слежу за разработкой PHP, но если вы по прежнему наблюдаете 
проблему - можно предположить, что баг в PHP так и не поправили, и 
fastcgi_finish_request() пользоваться не стоит.

-- 
Maxim Dounin
http://mdounin.ru/


Подробная информация о списке рассылки nginx-ru