IntroducaoArquiteturapgBouncer
Caso de Sucesso
pgBouncer: um aglomerador de conexoes paraPostgreSQL
Euler Taveira de Oliveira
PostgreSQL Brasil
24 de abril de 2009
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Resumo
1 Introducao
2 Arquitetura
3 pgBouncer
4 Caso de Sucesso
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Conceito
Aglomerador de Conexoes (connection pooler) e um software quemantem uma cache de conexoes para serem utilizadas emrequisicoes futuras.
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Objetivo
Diminuir impacto de performance causado pela abertura de novasconexoes
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Cenario
consultas de curto prazo
muitos usuarios
Aplicacoes Web
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Cenario
consultas de curto prazo
muitos usuarios
Aplicacoes Web
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Resumo
1 Introducao
2 Arquitetura
3 pgBouncer
4 Caso de Sucesso
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
PostgreSQL
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Conexao
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Arquitetura do Sistema
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Resumo
1 Introducao
2 Arquitetura
3 pgBouncer
4 Caso de Sucesso
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Modos de Operacao
aglomeracao por sessao (session pooling) – gentil
aglomeracao por transacao (transaction pooling)
aglomeracao por comando (command pooling) – agressivo
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Configuracao
arquivo de autenticacao
arquivo de configuracao (formato ini)
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Arquivo de Autenticacao
identico ao $PGDATA/global/pg auth
pode-se utilizar o mesmo arquivo se o pgBouncer estiver namesma maquina do PostgreSQL
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Arquivo de Configuracao
[databases]empresa = host=127.0.0.1 port=5432 dbname=4linux[pgbouncer]listen_addr = 127.0.0.1listen_port = 6432auth_type = md5auth_file = /etc/pgbouncer/userslogfile = /var/log/pgbouncer/pgbouncer.logpidfile = /var/run/pgbouncer/pgbouncer.pidadmin_users = pedrostats_users = joao, mariapool_mode = transactionmax_client_conn = 500default_pool_size = 100
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Arquivo de Configuracao - databases
Secao databases
dbname
host
port
user
password
pool size
client encoding
empresa = host=127.0.0.1 port=5432 dbname=4linux
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Arquivo de Configuracao - pgbouncer
Opcoes Gerais
logfile
auth type (trust, any, plain, crypt e md5)
auth file ($PGDATA/global/pg auth)
pool mode (session, transaction e statement)
admin users
stat users
max client conn
default pool size
reserve pool size
server round robin
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Arquivo de Configuracao - pgbouncer
Opcoes de Log
syslog
syslog facility
log connections
log disconnections
log pooler errors
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Arquivo de Configuracao - pgbouncer
Verificacoes e Tempo de Espera
server reset query (DISCARD ALL)
server check query (SELECT 1)
server idle timeout
server login retry
client login timeout
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Monitoramento
SHOW STATS
SHOW SERVERS
SHOW CLIENTS
SHOW POOLS
SHOW LISTS
SHOW USERS
SHOW DATABASES
SHOW FDS
SHOW CONFIG
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Monitoramento
pgbouncer=# show stats;-[ RECORD 1 ]----+-----------database | benchtotal_requests | 8014total_received | 3121707total_sent | 1527374total_query_time | 1361574602avg_req | 0avg_recv | 0avg_sent | 0avg_query | 0
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Controle de Operacoes
PAUSE: desconecta todos clientes mas espera consultasterminarem;
SUSPEND: para de atender requisicoes;
RESUME: voltar a trabalhar apos comandos PAUSE eSUSPEND;
SHUTDOWN: termina o processo do pgBouncer;
RELOAD: carrega novamente o arquivo de configuracao.
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Controle de Operacoes
pgbouncer=# pause;PAUSEpgbouncer=# resume;RESUMEpgbouncer=# reload;RELOAD
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Resumo
1 Introducao
2 Arquitetura
3 pgBouncer
4 Caso de Sucesso
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Caso de Sucesso: last.fm
Carga
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Caso de Sucesso: last.fm
Memoria
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Caso de Sucesso: last.fm
CPU
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Referencias
http://pgfoundry.org/projects/pgbouncer/http://www.postgresql.org/
http://www.postgresql.org.br/http://www.lastfm.com.br/user/Russ/journal/2008/02/21/
zd postgres connection pools: pgpool vs. pgbouncer
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Vida Longa ao PostgreSQL
Euler Taveira de Oliveira PGDay SP
IntroducaoArquiteturapgBouncer
Caso de Sucesso
Perguntas
?
Euler Taveira de [email protected]
http://www.timbira.com/
Euler Taveira de Oliveira PGDay SP