Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Testando o ubuntu
Por removido
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Dica

Definindo a quantidade de conexões simultâneas no PostgreSQL
Linux user
Publicado por Joaquim Nogueira Ferraz Filho em 10/02/2011

Login: joaquimferraz, 31497 pontos
[ Hits: 3722 ]

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

Leitura recomendada
   Dica Linux recomendada Novos repositórios Ubuntu e Debian
   Dica Linux recomendada Organizando as tralhas
   Dica Linux recomendada Instalando o Picasa 3 no Linux
   Dica Linux recomendada Programa de Educação em Software Livre (PESL)
   Dica Linux recomendada Guia rápido de instalação do Funtoo

Comentários
Nenhum comentário foi encontrado.

Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.