PgBouncer
Felipe Pereira
SEGURANÇA
DISASTERRECOVERY
POOL DECONEXÕES
OPENSOURCE
DESEMPENHO
PGBOUNCER
ARQUITETURA
Segurança
Segurança
Usuário possui a senha do banco de dados
Usuário acessa o IP do banco de dados
Usuário é Super User
Segurança
Usuário não possui a senha do banco de dados
Usuário não acessa o IP do banco de dados
Usuário não é Super User
SegurançaArquitetura de acesso
SegurançaNo Banco de Dados:
No .userlist:
Segurança
No pgbouncer.ini:
Segurança
No pgbouncer.ini:
Disaster Recovery
Disaster Recovery
Single Point of Failure
O ponto único de falha é responsável pela fraqueza de toda a estratégia de DR e por isso deve ser evitado.
Disaster Recovery
Configuração padrão:
Nova configuração:
Reload Online:
Pool de Conexões
Pool de Conexões
Desperdício de conexões
Desperdício de recursos
Escalonamento
Performance
Desperdício de Conexões
Desperdício de Recursos
Escalonamento
Performance
-10% / +40%
Session x Transaction x Statement
Transaction
Tabelas temporárias que guardam estado de sessão
CURRVAL de Sequences utilizadas em transações anteriores
Plugins/Extensions
Cache de Conexões
Tráfego de rede
Um ponto a mais na arquitetura
Overhead de iniciar uma conexão
Autenticação
Criação de processo no servidor
Cache de Conexões
0.03ms 0.06ms 0.74ms
ONDE INSTALAR?
Onde Instalar?
731
694
739
406
CONFIGURAÇÕES
Configurações
Max_Client_ConnÉ o máximo de client connections permitido da aplicação para o
PgBouncer. Lembrar de configurar também o file descriptor limit.
Default_Pool_SizeO tamanho máximo do pool para cada banco de dados configurado.
Min_Pool_SizeÉ a quantidade de conexões que o Bouncer
Max_Db_ConnectionsNúmero máximo de conexões ao servidor de banco de dados,
independentemente da quantidade de pools configurada para o mesmo db/server.
Configurações
Server_LifetimeO PgBouncer irá matar as conexões que existirem por mais tempo do
que o configurado neste parâmetro (em segundos).
Server_Idle_TimeoutSe a conexão estiver Idle por mais do que o configurado neste
parâmetro, a mesma será encerrada.
Client_Login_TimeoutA conexão do cliente ao PgBouncer será encerrada se o login não for
feito dentro do tempo configurado (em segundos).
Configurações Perigosas
Query_TimeoutQueries que estiverem executando por mais tempo do que o
configurado, serão encerradas. Lembre-se de relatórios, cargas de dados, etc.
Query_Wait_TimeoutAo ser enfileirada para esperar a execução, a query irá esperar o tempo
configurado neste parâmetro, após isso será morta. Se desabilitado, as queries esperam em fila indefinidamente.
Client_Idle_TimeoutSe a conexão entre cliente e PgBouncer estiver idle por este tempo, a
conexão será derrubada.
Idle_Transaction_TimeoutSe a conexão entre PgBouncer e DB estiver em “idle in transaction” por
este tempo, a conexão será derrubada.