O objetivo deste artigo é 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 a 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 artigo, 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
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
Nenhum comentário:
Postar um comentário
Regras:
Só serão aprovados comentários relacionados ao "Post".
Seu comentário será aprovado e respondido o mais rápido possível.
Obrigado.