scgi_socket_keepalive
Директива 'scgi_socket_keepalive' включает или отключает поддержку keep-alive для SCGI-соединений. — NGINX HTTP Core
Описание
Директива 'scgi_socket_keepalive' используется в основном HTTP‑модуле NGINX для управления keep-alive соединениями для SCGI (Simple Common Gateway Interface). При установке этой директивы в 'on' SCGI‑сокет может поддерживать открытое соединение с клиентом, позволяя повторно использовать тот же сокет для нескольких запросов. Это может повысить производительность за счёт уменьшения накладных расходов на установление соединений, особенно для приложений, которые часто взаимодействуют с бэкенд‑серверами SCGI. Напротив, при установке в 'off' каждый запрос будет устанавливать новое соединение, что может увеличить задержку из‑за затрат на установление и разрыв соединения. Директиву можно помещать в контексты 'http', 'server' или 'location', что даёт гибкие возможности конфигурации в зависимости от потребностей приложения. Частый сценарий использования — это блоки 'location', которые обслуживают динамический контент, генерируемый SCGI‑приложениями, где поддержание соединения может улучшить пропускную способность и снизить потребление ресурсов в условиях высокого трафика. Важно, что директива совместима со всеми SCGI‑командами. Параметры keep-alive могут существенно влиять на поведение взаимодействия с бэкендом. Поэтому рекомендуется отслеживать шаблоны трафика приложения и метрики производительности при включении этой функции, поскольку при большом числе одновременно поддерживаемых соединений это может привести к увеличению использования ресурсов.
Пример конфига
location /app {
scgi_pass 127.0.0.1:4000;
scgi_socket_keepalive on;
}Убедитесь, что бэкенд-сервер SCGI поддерживает keep-alive соединения.
Использование keep-alive без соответствующих стратегий балансировки нагрузки может привести к истощению ресурсов.
Остерегайтесь увеличения использования памяти, если слишком много keep-alive соединений остаются открытыми в течение длительного времени.