Просто увеличавам max_connections
е лоша идея. Трябва да увеличите shared_buffers
и kernel.shmmax
също.
Съображения
max_connections
определя максималния брой едновременни връзки към сървъра на базата данни. По подразбиране обикновено са 100 връзки.
Преди да увеличите броя на вашите връзки, може да се наложи да разширите внедряването си. Но преди това трябва да помислите дали наистина имате нужда от повишено ограничение на връзката.
Всяка PostgreSQL връзка консумира RAM за управление на връзката или клиента, който я използва. Колкото повече връзки имате, толкова повече RAM ще използвате, която вместо това може да се използва за стартиране на базата данни.
Едно добре написано приложение обикновено не се нуждае от голям брой връзки. Ако имате приложение, което се нуждае от голям брой връзки, помислете за използването на инструмент като pg_bouncer, който може да обединява връзки за вас. Тъй като всяка връзка консумира RAM, трябва да се стремите да сведете до минимум тяхното използване.
Как да увеличим максималния брой връзки
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 за използване за кеширане на данни .
- Ако имате система с 1GB или повече RAM, разумна начална стойност за shared_buffers е 1/4 от паметта във вашата система.
- Малко вероятно е да използвате повече от 40% RAM, за да работите по-добре от по-малко количество (като 25%).
- Имайте предвид, че ако вашата система или версия на PostgreSQL е 32-битова, може да не е практично да зададете shared_buffers над 2 ~ 2,5 GB.
- Обърнете внимание, че в Windows големите стойности за shared_buffers не са неефективни и може да намерите по-добри резултати, като го поддържате сравнително ниски и вместо това използвате повече кеша на ОС. В Windows полезният диапазон е 64MB до 512MB .
2. Променете kernel.shmmax
Ще трябва да увеличите максималния размер на сегмента на ядрото, за да бъде малко по-голям отколкото shared_buffers
.
Във файл /etc/sysctl.conf
задайте параметъра, както е показано по-долу. Ще влезе в сила, когато postgresql
рестартира (Следният ред прави ядрото максимално до 96Mb
)
kernel.shmmax=100663296
Препратки
Postgres Max връзки и споделени буфери
Настройка на вашия PostgreSQL сървър