Nginx документы говорят, что keepalive для fastcgi не может работать, если fastcgi_keep_conn не включен. Однако я не могу найти более подробной информации по этому поводу. У меня уже есть поддержка активности на сервере. Я использую php-fpm. Есть ли какие-нибудь проблемы с использованием fastcgi_keep_conn, о которых мне следует знать?
Теоретически fastcgi_keep_conn
действительно увеличивает производительность, поскольку сокет между nginx и PHP-FPM остается открытым после обработки запроса. Таким образом экономится время, затрачиваемое на открытие розетки.
В целом это позволит сэкономить несколько миллисекунд на каждом запросе, поэтому не имеет такого большого эффекта.
Документация просто означает, что вам необходимо иметь как upstream
блок с keepalive
вариант и fastcgi_keep_conn
в вашем блоке сценария PHP для работы поддержки активности соединения.
В принципе, fastcgi_keep_conn
опция указывает nginx, чтобы PHP-FPM сохранял соединение открытым после запроса, а keepalive
connection сообщает nginx, что соединение должно оставаться открытым.
Вам также необходимо установить keepalive_requests
вариант вашего апстрима на тот же номер, что и ваш php-fpm pm.max_requests
, иначе вы можете столкнуться с этой проблемой: https://stackoverflow.com/a/51457613/10115267
Обычно вы можете получать одну из следующих ошибок каждый раз при перезапуске дочернего процесса php-fpm из-за pm.max_requests
достигается, пока к нему подключен nginx:
Ошибка readv () (104: сброс соединения одноранговым узлом) при чтении восходящего потока и recv () не удалось (104: сброс соединения одноранговым узлом) при чтении заголовка ответа из восходящего потока