Pooling de Conexão  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
Oenning
Thread.start()
[Avatar]

Membro desde: 11/05/2007 19:16:26
Mensagens: 48
Offline

Alguém tem uma explicação ou link legal sobre pooling de conexão?

Tipo, tenho uma Task no Spring que a cada 10 segundos abre X threads assíncronas que acessam o banco de dados, fazem algumas operações e finalizam.
Em alguns momentos, esse número de threads chega a 100 simultâneas e começa a dar erro de "connections refused" no Hibernate.

Meu pool estava definido em 10, removi a definição e agora o erro não acontece mais. Eu achei que pool era a quantidade mínima de conexões que ficavam em espera, e que não tinha nada a ver com conexões máximas.

Valeu!

Blog: http://blog.oenning.eti.br
Twitter: @goenning
[WWW]
partenon
JavaChild
[Avatar]
Membro desde: 27/06/2010 15:08:10
Mensagens: 103
Localização: Brno, Czech Republic
Offline

Connection pooling significa, basicamente, uma "caixa de conexoes", onde vc deixa algumas conexoes prontas para uso. Voce configura quantas conexoes esta caixa deve ter inicialmente, quantas conexoes devem ser adicionadas qndo comecarem a faltar conexoes, e qual o maximo de conexoes que cabem na caixa. Existem diversos jeitos de se configurar. Por exemplo, pode-se usar o C3P0 ou DBCP, ou ainda usar o connection pooling que o seu Servidor de Aplicacoes disponibiliza.

Se vc nao usar connection pooling, toda hora que vc precisar de uma conexao ele vai abrir uma conexao com o banco, consumir e fechar. Com connection pooling, vc simplesmente pega uma conexao do pool e a consome. O "provedor" das conexoes eh que se encarrega de abrir, manter aberta e fechar (se necessario).

http://www.google.com/profiles/partenon
[WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Só lembrando que o processo de abrir uma conexão com o banco pode ser extremamente lento pois envolve:
a) Autenticação do cliente com o banco;
b) Criação de um "ambiente virtual" no banco para aquela conexão rodar - cada conexão tem seus próprios statements, ponteiros de resultsets, etc;
c) Verificação de permissões de usuário;

Entre outras coisas. Por isso a necessidade de se manter conexões abertas prontas para uso, e de se ter um pool.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Oenning
Thread.start()
[Avatar]

Membro desde: 11/05/2007 19:16:26
Mensagens: 48
Offline

Entendi, mas ao definir meu pool em 20, por exemplo, isso não significa que apenas 20 conexões simultâneas serão permitidas, correto?
Pelo que eu entendi, a conexão 21 vai ter que ser criada enquanto a conexao 20 fica no pool.

Acho que devo ter errado em alguma outra configuração, vou dar uma olhada para ver o que pode ser.

Blog: http://blog.oenning.eti.br
Twitter: @goenning
[WWW]
LPJava
GUJ Hacker

Membro desde: 18/04/2006 12:50:23
Mensagens: 5524
Localização: Bahia/Porto Alegre
Offline

dar uma olhada: http://blog.camilolopes.com.br/pooldeconexaotomcat/
http://blog.camilolopes.com.br/solutionlinkhibernate/
nao sei se vai ti ajudar em algo, ver ai. flw

Sun Certified Java Programmer 5.0
Blog:http://www.camilolopes.com
Twitter:www.twitter.com/camilolope
Linkedin: http://br.linkedin.com/in/camilolopes
Curso online OCPJP: http://pro.imasters.com.br/online/cursos/preparatorio-para-certificacao-java-ocjp
Autor livro Guia SCJP & JEE c/ Frameworks: http://blog.camilolopes.com.br/livrosrevistaspalestras/
[WWW]
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team