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

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

[ Hits: 19.024 ]

 


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

Instalando a JRE da SUN no Ubuntu

Carregando o mapa correto do teclado na console do Linux

Vim não está acentuando o texto

Arquivos de ajuda de um pacote instalado no Linux

Recuperando a senha do root de seu MySQL

Leitura recomendada

Orientação a objetos com a linguagem Ruby

Construindo uma URA (Unidade de Resposta Audível) no Asterisk 1.4.X

Montando um servidor de remote desktop com NX Server

Subversion + CentOS 5.5

Como instalar o scanner da impressora Epson TX105 no Isigne Momentum 5.0

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts