Apenas aumentando
max_connections
é má ideia. Você precisa aumentar os shared_buffers
e kernel.shmmax
também. Considerações
max_connections
determina o número máximo de conexões simultâneas com o servidor de banco de dados. O padrão é normalmente 100 conexões. Antes de aumentar sua contagem de conexões, talvez seja necessário dimensionar sua implantação. Mas antes disso, você deve considerar se realmente precisa de um limite de conexão maior.
Cada conexão PostgreSQL consome RAM para gerenciar a conexão ou o cliente que a utiliza. Quanto mais conexões você tiver, mais memória RAM você usará e poderá ser usada para executar o banco de dados.
Um aplicativo bem escrito normalmente não precisa de um grande número de conexões. Se você tiver um aplicativo que precise de um grande número de conexões, considere usar uma ferramenta como pg_bouncer, que pode agrupar conexões para você. Como cada conexão consome RAM, você deve procurar minimizar seu uso.
Como aumentar o máximo de conexões
1. Aumente
max_connection
e shared_buffers
em
/var/lib/pgsql/{version_number}/data/postgresql.conf
mudança
max_connections = 100
shared_buffers = 24MB
para
max_connections = 300
shared_buffers = 80MB
Os
shared_buffers
parâmetro de configuração determina quanta memória é dedicado para o PostgreSQL usar para armazenar dados em cache . - Se você tiver um sistema com 1 GB ou mais de RAM, um valor inicial razoável para shared_buffers é 1/4 da memória em seu sistema.
- é improvável que você descubra que usar mais de 40% de RAM para funcionar melhor do que uma quantidade menor (como 25%)
- Esteja ciente de que, se o seu sistema ou compilação do PostgreSQL for de 32 bits, pode não ser prático definir shared_buffers acima de 2 ~ 2,5 GB.
- Observe que, no Windows, valores grandes para shared_buffers não são tão eficazes, e você pode encontrar melhores resultados mantendo-os relativamente baixos e usando mais o cache do SO. No Windows, o intervalo útil é de 64 MB a 512 MB .
2. Alterar kernel.shmmax
Você precisaria aumentar o tamanho máximo do segmento do kernel para ligeiramente maior do que os
shared_buffers
. No arquivo
/etc/sysctl.conf
defina o parâmetro conforme mostrado abaixo. Ele entrará em vigor quando postgresql
reboots (A linha a seguir torna o kernel max para 96Mb
) kernel.shmmax=100663296
Referências
Conexões Postgres Max e buffers compartilhados
Ajustando seu servidor PostgreSQL