CONEXÕES ADORMECIDAS

ARCADYUM 16/11/2014 13:58:48
#442556
A cada dia um novo problema e a tentativa de uma solução.

Recentemente comecei uns testes com um sistema novo. A cada rodada as coisas iam sendo corrigidas e adequadas a situação. Então um belo dia me veio esse erro [Ô]too many connections[Ô]. Pesquisei sobre o erro e algumas respostas era que o número de conexões estava estourado. Não era possível novas conexões. Mas, a única pessoa que estava realizando essa conexão era eu. Então li sobre matar conexões adormacidas. Pesquisei uma rotina em Vb.net, mas ela não me pareceu muito confiável ou eu não a entendi direito.
Bom, gostaria de saber sobre boas práticas em conexão com banco de dados mysql e vb.net. Aumentar o número de pools, matar a conexão adormecida pelo programa ou por um storage procedure ou outra solução já implementad por algum de vocês.
Aguardo uma notícia e desde já agradeço,


NILSONTRES 16/11/2014 14:56:19
#442557
Estranho, utilizo mysql a anos, e nunca tive esse problema.
ARCADYUM 16/11/2014 16:57:43
#442559
Pois é Nilson,
Achei estranho também. Mas, aconteceu e agora estou atrás de uma solução adequada para o problema.
KURTGU 17/11/2014 11:10:56
#442568
conexao.close ? apos ultiliza-las?
FOXMAN 17/11/2014 12:07:22
#442569
Resposta escolhida
Não é estranho não, isso se torna comun em sistemas que utilizam-se de novas conexões a cada acesso a dados e que não tem um tratamento adequado para fecha-las.
Eu tive problema semelhante, e quando fui verificar no banco de dados , as conexões ativas , tinha diversas abertas para o mesmo usuário.

Reformulei totalmente a parte de conexões do meu sistema. Re-utilizo a mesma conexao desde o login. No entanto em alguns casos a conexão é destruida e iniciada uma nova conexão.

Se quiser saber quais conexões estão ativas utilize o comando abaixo :

SELECT 'ID', 'USER', 'HOST', 'DB', 'COMMAND', 'TIME', 'STATE', LEFT('INFO', 51200) AS 'Info' FROM 'information_schema'.'PROCESSLIST';
NILSONTRES 17/11/2014 14:40:04
#442570
Certo FOX,
Não me atentei para esse detalhe, exatamente por isso não tenho problemas, abro a conexão e mantenho aberta até que encerre o sistema.
KURTGU 18/11/2014 02:20:40
#442588
Foi o que eu disse la em cima, e so voce ultilizar o metodo de abrir e fechar apos ultilizar as conexoes...
KURTGU 18/11/2014 02:23:42
#442589
FoxMan tem como eu usar esse select direto no vb para monitorar as conexoes de um banco? se sim tem algum exemplo ai..
NILSONTRES 18/11/2014 13:41:37
#442597
KURTGU
Pelo prompt do mysql da um: [Ô]show full processlist[Ô]
Observe os campos e ele te traz e trata no vb, é uma consulta normal.
Eu utilizo isso para saber quais usuarios estão logados, assim fica facil, quando mando fechar o sistema, os usuarios falam que não tem mais ninguem com ele aberto.
Ai vc tem como saber se tem ou não.
KURTGU 18/11/2014 13:56:53
#442598
Vlw consegui aqui..
FOXMAN 18/11/2014 14:46:54
#442599
Citação:

:
FoxMan tem como eu usar esse select direto no vb para monitorar as conexoes de um banco? se sim tem algum exemplo ai..


Tem como usar sim, apenas o usuario que der o select terá que ter acesso ao recurso solicitado.

Exemplo eu não tenho, mas fica fácil de montar, basta jogar isso num reader e pronto.
Eu deixo isso oculto, pois criei uma SP(stored Procedure) que monitora quantas conexões o usuario tem. Caso tenha mais que uma eu dou um kill nas mais antigas e mantenho a mas recente .
Mas isso tudo através da classe que gerencia as conexões.

Página 1 de 2 [13 registro(s)]
Tópico encerrado , respostas não são mais permitidas