Pular para o conteúdo

Definindo a quantidade de conexões simultâneas no PostgreSQL

Dica publicada em Linux / Introdução
Joaquim Nogueira Ferraz Filho joaquimferraz
Hits: 30.186 Categoria: Linux Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar

Definindo a quantidade de conexões simultâneas no PostgreSQL

O objetivo desta dica é ajudar a definir o número de conexões concorrentes ao SGBD, ou seja, ajustar a quantidade para a real demanda do ambiente. A necessidade de tal definição surgiu devido as inúmeras reclamações de lentidão em uma de nossas aplicações que roda em Postgres.

Tínhamos que descobrir a causa e rapidamente implementar uma solução. Analisando a quantidade de processos detectamos que o problema se relacionava à quantidade de conexões concorrentes com banco, sendo assim, de pronto ajustamos a diretiva "max_connections" no arquivo "postgresql.conf" e reiniciamos o serviço.

Claro que nesse primeiro ajuste realizado, aumentamos o número de conexões sem nenhum embasamento ou estudo de carga do ambiente. Como dissemos no início desse documento, o objetivo é ajudar a levantar a real necessidade, ou seja, descobrir qual é o pico de conexões concorrentes.

Então, para detectarmos a quantidade de acessos simultâneos no momento o comando é:

# psql -U postgres -t -c "select count(*) from pg_stat_activity;

O comando acima apenas fornece a quantidade conexões naquele instante, porém para levantarmos dados de um período, criamos o script a seguir, onde o mesmo é parametrizado para receber o número de segundos em que a consulta será repetida.

#!/bin/bash
if [ $# -eq 1 ]; then
   while true
   do
      echo $(psql -U postgres -t -c "select count(*) from pg_stat_activity;")
      sleep $1s
   done
else
   echo
   echo Uso: $0 [num de segundos]
   echo
fi

Para podermos analisar com maior exatidão qual era o número máximo de conexões, ou seja, o pico de acessos, realizamos o levantamento das informações pelo período de 1(uma) semana usando o comando a seguir:

# ./userOn.sh 1 | tee /tmp/conexoesBanco.txt

Com o comando acima foi possível ver a quantidade de conexões simultâneas a cada segundo impresso na console do servidor e ao mesmo tempo, tudo que era visualizado era salvo no arquivo "/tmp/conexoesBanco.txt" para posterior análise, que através da execução do comando a seguir foi possível visualizar qual era o número máximo de conexões concorrentes no Postgres no período analisado.

# cat /tmp/conexoesBanco.txt | sort -n | uniq

Após o levantamento e estudos do ambiente, ajustarmos a diretiva de conexões do Postgres, com um incremento em 20% no número encontrado pois sempre é possível ter alguma demanda repentina.

Qualquer crítica, sugestão ou dúvida mande uma mensagem.

Atenciosamente,
Joaquim Ferraz

Database backends mismatch! You must manually

Instalando a JRE da SUN no Ubuntu

Recuperando a senha do root de seu MySQL

Deixando o VIM colorido

Carregando o mapa correto do teclado na console do Linux

[Ubuntu 11.04] Nokia N70 como modem Bluetooth

Conheça a distro que pode te tornar um ótimo administrador Linux

Como instalar uma impressora térmica ARGOX OS214 no Linux

API do Twitter para Python

O que fazer após instalar o Ubuntu 14.04

Nenhum comentário foi encontrado.

Contribuir com comentário

Entre na sua conta para comentar.