Nginx выбрасывает 502 с перерывами на каждой странице при использовании fastcgi_finish_request()

Недавно я унаследовал администрирование более 2-х блоков Nginx в AWS и очень незнаком с тем, как работает PHP-FPM (и не работает). Недавно я интегрировал Keen.IO для ведения журнала бэкенда, используя:

fastcgi_finish_request();

в php, чтобы завершить запрос, а затем продолжить вход в Keen. Казалось, что это работает хорошо, за исключением некоторой более высокой задержки, которую, как я полагаю, пользователь не испытывал, потому что он уже отключился.

Однако сегодня, по мере наращивания трафика, мы начали получать 502 ошибки шлюза, и оба сервера имеют следующую ошибку:

[error] 2356#0: *70245 upstream sent unexpected FastCGI record: 3 while reading response header from upstream, client: (ADDRESS), server: igun-api-slaves.crimson-moon.com, request: "GET (Address)", upstream: "fastcgi://unix:/var/run/php-fpm/product1.socket:", host: "ADDRESS"

Это происходит на всех наших страницах, а не только на тех, которые я изменил с помощью логирования. Я полностью потерян, так как это все для меня новое. Что именно означает эта ошибка?

-- РЕДАКТИРОВАТЬ

Теперь я вижу в облаке AWS, что ошибки появляются с момента редактирования кода, а не только при формировании трафика.

2 ответа

Решение

Эта ошибка вызвана ошибкой в ​​PHP, которая неправильно обрабатывает fastcgi_finish_request ()

https://bugs.php.net/bug.php?id=67583

Это можно обойти до исправления, отключив fastcgi_keep_conn в настройках Ngynx.

Сообщение журнала означает, что PHP-FPM отправляет идентификатор типа записи, который nginx не понимает. Оказывается, как вы уже догадались, тип записи 3 соответствует FCGI_END_REQUEST. Таким образом, может показаться, что поддержка FCGI в nginx является неполной, поскольку она не распознает и правильно обрабатывает этот тип записи.

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

Другие вопросы по тегам