pgbouncer: um aglomerador de conexões para postgresql

30
Introdu¸c˜ ao Arquitetura pgBouncer Caso de Sucesso pgBouncer: um aglomerador de conex˜ oes para PostgreSQL Euler Taveira de Oliveira PostgreSQL Brasil 24 de abril de 2009 Euler Taveira de Oliveira PGDay SP

Upload: elliando-dias

Post on 05-Jul-2015

1.557 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: pgBouncer: um aglomerador de conexões para PostgreSQL

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

Page 2: pgBouncer: um aglomerador de conexões para PostgreSQL

IntroducaoArquiteturapgBouncer

Caso de Sucesso

Resumo

1 Introducao

2 Arquitetura

3 pgBouncer

4 Caso de Sucesso

Euler Taveira de Oliveira PGDay SP

Page 3: pgBouncer: um aglomerador de conexões para PostgreSQL

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

Page 4: pgBouncer: um aglomerador de conexões para PostgreSQL

IntroducaoArquiteturapgBouncer

Caso de Sucesso

Objetivo

Diminuir impacto de performance causado pela abertura de novasconexoes

Euler Taveira de Oliveira PGDay SP

Page 5: pgBouncer: um aglomerador de conexões para PostgreSQL

IntroducaoArquiteturapgBouncer

Caso de Sucesso

Cenario

consultas de curto prazo

muitos usuarios

Aplicacoes Web

Euler Taveira de Oliveira PGDay SP

Page 6: pgBouncer: um aglomerador de conexões para PostgreSQL

IntroducaoArquiteturapgBouncer

Caso de Sucesso

Cenario

consultas de curto prazo

muitos usuarios

Aplicacoes Web

Euler Taveira de Oliveira PGDay SP

Page 7: pgBouncer: um aglomerador de conexões para PostgreSQL

IntroducaoArquiteturapgBouncer

Caso de Sucesso

Resumo

1 Introducao

2 Arquitetura

3 pgBouncer

4 Caso de Sucesso

Euler Taveira de Oliveira PGDay SP

Page 8: pgBouncer: um aglomerador de conexões para PostgreSQL

IntroducaoArquiteturapgBouncer

Caso de Sucesso

PostgreSQL

Euler Taveira de Oliveira PGDay SP

Page 9: pgBouncer: um aglomerador de conexões para PostgreSQL

IntroducaoArquiteturapgBouncer

Caso de Sucesso

Conexao

Euler Taveira de Oliveira PGDay SP

Page 10: pgBouncer: um aglomerador de conexões para PostgreSQL

IntroducaoArquiteturapgBouncer

Caso de Sucesso

Arquitetura do Sistema

Euler Taveira de Oliveira PGDay SP

Page 11: pgBouncer: um aglomerador de conexões para PostgreSQL

IntroducaoArquiteturapgBouncer

Caso de Sucesso

Resumo

1 Introducao

2 Arquitetura

3 pgBouncer

4 Caso de Sucesso

Euler Taveira de Oliveira PGDay SP

Page 12: pgBouncer: um aglomerador de conexões para PostgreSQL

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

Page 13: pgBouncer: um aglomerador de conexões para PostgreSQL

IntroducaoArquiteturapgBouncer

Caso de Sucesso

Configuracao

arquivo de autenticacao

arquivo de configuracao (formato ini)

Euler Taveira de Oliveira PGDay SP

Page 14: pgBouncer: um aglomerador de conexões para PostgreSQL

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

Page 15: pgBouncer: um aglomerador de conexões para PostgreSQL

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

Page 16: pgBouncer: um aglomerador de conexões para PostgreSQL

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

Page 17: pgBouncer: um aglomerador de conexões para PostgreSQL

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

Page 18: pgBouncer: um aglomerador de conexões para PostgreSQL

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

Page 19: pgBouncer: um aglomerador de conexões para PostgreSQL

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

Page 20: pgBouncer: um aglomerador de conexões para PostgreSQL

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

Page 21: pgBouncer: um aglomerador de conexões para PostgreSQL

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

Page 22: pgBouncer: um aglomerador de conexões para PostgreSQL

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

Page 23: pgBouncer: um aglomerador de conexões para PostgreSQL

IntroducaoArquiteturapgBouncer

Caso de Sucesso

Controle de Operacoes

pgbouncer=# pause;PAUSEpgbouncer=# resume;RESUMEpgbouncer=# reload;RELOAD

Euler Taveira de Oliveira PGDay SP

Page 24: pgBouncer: um aglomerador de conexões para PostgreSQL

IntroducaoArquiteturapgBouncer

Caso de Sucesso

Resumo

1 Introducao

2 Arquitetura

3 pgBouncer

4 Caso de Sucesso

Euler Taveira de Oliveira PGDay SP

Page 25: pgBouncer: um aglomerador de conexões para PostgreSQL

IntroducaoArquiteturapgBouncer

Caso de Sucesso

Caso de Sucesso: last.fm

Carga

Euler Taveira de Oliveira PGDay SP

Page 26: pgBouncer: um aglomerador de conexões para PostgreSQL

IntroducaoArquiteturapgBouncer

Caso de Sucesso

Caso de Sucesso: last.fm

Memoria

Euler Taveira de Oliveira PGDay SP

Page 27: pgBouncer: um aglomerador de conexões para PostgreSQL

IntroducaoArquiteturapgBouncer

Caso de Sucesso

Caso de Sucesso: last.fm

CPU

Euler Taveira de Oliveira PGDay SP

Page 28: pgBouncer: um aglomerador de conexões para PostgreSQL

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

Page 29: pgBouncer: um aglomerador de conexões para PostgreSQL

IntroducaoArquiteturapgBouncer

Caso de Sucesso

Vida Longa ao PostgreSQL

Euler Taveira de Oliveira PGDay SP

Page 30: pgBouncer: um aglomerador de conexões para PostgreSQL

IntroducaoArquiteturapgBouncer

Caso de Sucesso

Perguntas

?

Euler Taveira de [email protected]

http://www.timbira.com/

Euler Taveira de Oliveira PGDay SP