postgres_keepalive
Директива `postgres_keepalive` настраивает параметры keepalive для подключений к PostgreSQL в NGINX.
Описание
Директива postgres_keepalive используется в контексте upstream для управления длительностью и количеством постоянных подключений к серверу базы данных PostgreSQL. Настраивая эту директиву, пользователь может оптимизировать использование ресурсов, поддерживая пул подключений, чтобы избежать накладных расходов на производительность, связанных с повторным установлением соединений для каждого запроса. Директива принимает несколько параметров, наиболее важным из которых является max, который задаёт максимальное число keepalive-подключений, которые могут быть открыты на один рабочий процесс. Это ограничение числа одновременных подключений защищает от исчерпания ресурсов. Параметр mode определяет, как выбираются подключения для использования: single допускает лишь одно подключение на запрос, тогда как multi может использовать несколько подключений для данного запроса, оптимизируя параллельные операции с базой данных.
Более того, параметр overflow контролирует, как сервер должен обрабатывать запросы, когда достигнут максимальный лимит подключений. Если задано значение ignore, сервер закроет соединение после запроса, если пул полон, тогда как reject отклонит запрос с ответом 503 Service Unavailable. Эта директива укрепляет механизм управления соединениями, позволяя добиваться лучшей масштабируемости и производительности при взаимодействии с базами данных PostgreSQL через NGINX.
Пример конфига
upstream postgres_backend {
postgres_server 127.0.0.1:5432 dbname=mydb user=myuser password=mypassword;
postgres_keepalive max=15 mode=multi overflow=ignore;
}Убедитесь, что параметр max установлен в соответствии с мощностями вашего сервера, чтобы избежать перегрузки соединений.
Если overflow установлен в reject, тщательно проверьте логику приложения, чтобы корректно обрабатывать возможные ответы 503.
Настройте mode в соответствии с потребностями приложения для параллельных запросов к базе данных, чтобы оптимизировать производительность.