Просто збільшення 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
Список літератури
Постгреси Максимальні з'єднання та спільні буфери
Налаштування сервера PostgreSQL