Просто увеличение max_connections
- плохая идея. Вам нужно увеличить shared_buffers
и kernel.shmmax
тоже.
Соображения
max_connections
определяет максимальное количество одновременных подключений к серверу базы данных. По умолчанию обычно 100 подключений.
Перед увеличением количества подключений вам может потребоваться масштабирование развертывания. Но перед этим следует подумать, действительно ли вам нужно повышенное ограничение на подключение.
Каждое соединение PostgreSQL потребляет оперативную память для управления соединением или клиентом, использующим его. Чем больше у вас подключений, тем больше оперативной памяти вы будете использовать для работы с базой данных.
Хорошо написанное приложение обычно не требует большого количества подключений. Если у вас есть приложение, которому требуется большое количество подключений, подумайте об использовании такого инструмента, как pg_bouncer, который может объединять подключения для вас. Поскольку каждое соединение потребляет оперативную память, вы должны стремиться минимизировать их использование.
Как увеличить максимальное количество подключений
1. Увеличение max_connection
иshared_buffers
в /var/lib/pgsql/{version_number}/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 не так эффективны, и вы можете найти лучшие результаты, оставив их на относительно низком уровне и вместо этого больше используя кеш ОС. В Windows полезный диапазон составляет от 64 МБ до 512 МБ .
2. Измените kernel.shmmax
Вам нужно будет увеличить максимальный размер сегмента ядра, чтобы он был немного больше,
чем размерshared_buffers
.
В файле /etc/sysctl.conf
установите параметр, как показано ниже. Он вступит в силу при postgresql
перезагрузке (следующая строка устанавливает максимальное значение ядра 96Mb
)
kernel.shmmax=100663296
Ссылки
Максимальное количество подключений и общие буферы Postgres
Настройка сервера PostgreSQL