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

Publicado por Joaquim Nogueira Ferraz Filho em 10/02/2011

[ Hits: 28.735 ]

 


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

Outras dicas deste autor

Deixando o VIM colorido

Vim não está acentuando o texto

Instalando a JRE da SUN no Ubuntu

Database backends mismatch! You must manually

Carregando o mapa correto do teclado na console do Linux

Leitura recomendada

Você conhece o NetbootCD?

Instalação do driver da placa wireless Broadcom/bcm4312 no Debian 6.0

Instalando Pacotes SNAP no Gentoo

Instalando o cliente Oracle no Slackware 12 para uso do SQLPLUS

Alternativas ao MS Paint pra Linux

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts