Ответ 1
Простое увеличение max_connections
- плохая идея. Вам также нужно увеличить shared_buffers
и kernel.shmmax
.
Соображения
max_connections
определяет максимальное количество одновременных подключений к серверу базы данных. По умолчанию обычно установлено 100 соединений.
Прежде чем увеличивать количество подключений, вам может понадобиться расширить развертывание. Но перед этим вам следует подумать, действительно ли вам нужен повышенный лимит подключения.
Каждое соединение PostgreSQL потребляет ОЗУ для управления соединением или клиентом, использующим его. Чем больше соединений у вас есть, тем больше оперативной памяти вы будете использовать, чтобы вместо этого использовать для запуска базы данных.
Хорошо написанное приложение обычно не нуждается в большом количестве подключений. Если у вас есть приложение, которое нуждается в большом количестве подключений, рассмотрите возможность использования такого инструмента, как pg_bouncer, который может объединять соединения для вас. Поскольку каждое соединение потребляет ОЗУ, вы должны стараться свести к минимуму их использование.
Как увеличить максимальные соединения
1. Увеличить max_connection
и shared_buffers
в /var/lib/pgsql/data/postgresql.conf
менять
max_connections = 100
shared_buffers = 24MB
в
max_connections = 300
shared_buffers = 80MB
Параметр конфигурации shared_buffers
определяет, сколько памяти предназначено для PostgreSQL для использования для кэширования данных.
- Если у вас есть система с 1 ГБ или более ОЗУ, разумное начальное значение для shared_buffers равно 1/4 памяти в вашей системе.
- маловероятно, что вы найдете более 40% ОЗУ для работы лучше, чем меньшая сумма (например, 25%),
- Имейте в виду, что если ваша система или сборка PostgreSQL 32-разрядная, может быть нецелесообразно устанавливать shared_buffers выше 2 ~ 2,5 ГБ.
- Обратите внимание, что в Windows большие значения для shared_buffers не так эффективны, и вы можете найти лучшие результаты, сохраняя их относительно низкими и вместо этого использовать кеш OS. В Windows полезный диапазон составляет от 64 МБ до 512 МБ.
2. Измените kernel.shmmax
Вам нужно увеличить размер сегмента max max, чтобы быть немного больше, чем shared_buffers
.
В файле /etc/sysctl.conf
задайте параметр, как показано ниже. Он вступит в силу, если postgresql
перезагрузится (следующая строка делает ядро max до 96Mb
)
kernel.shmmax=100663296
Рекомендации
Максимальное количество подключений и общих буферов Postgres