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