Usuário com melhor resposta
Problema de conexão com Mysql, ele mantem mantém o pool aberto e cresce a lista

Pergunta
-
Pois é, como diz o titulo, o que acontece é o seguinte, tenho um webservice que ficar recebendo get de pesquisa dos clientes e retorna um Json. Tudo funciona perfeitamente até que, em algum momento indefinido o dia, os pools param de fechar, a lista de conexões no mysql crescem e ai começa a dar timeout.
Toda estrutura fica dentro do using
using (var connection = ConnectionFactory.createConnection()) { connection.Open(); String MySql = "SELECT * FROM acessos WHERE..."; using (MySqlCommand command = new MySqlCommand(MySql, connection)) { try { using (MySqlDataReader dr = command.ExecuteReader()) { while (dr.Read()) { leio os dados return dados; } } return null; } catch (Exception ex) { Email oEmail = new Email(); oEmail.enviaEmailSuporte("Foi identificado um erro no comando (" + MySql + ") no arquivo (" + pagina + "). Erro: (" + ex.Message + ").<br><br>"); return null; } finally { connection.Close(); connection.Dispose(); command.Dispose(); MySqlConnection.ClearPool(connection); } } }
Com ou se .Close() e .Dispose() o problema persiste.
No web.config a linha de conexão está assim:
<add name="strConn" connectionString="Server=server; user id=user; password=senha; database=bancodedados; Pooling=true; Min Pool Size=2; Max Pool Size=100; Connection Lifetime=600;Asynchronous Processing=true" providerName="MySQL.Data.MySQLClient" />
Olha como fico o mysql:
Já troquei também a versão do connector, usei 6.8 e 6.7. Não fez diferença.
Não sei mais o que fazer. Alguém tem uma idéia do que pode ser?
Respostas
-
Nao use datareader...use datatable.
(MySqlDataReader
A flower cannot blossom without sunshine, and man cannot live without love.
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 26 de setembro de 2018 23:01
Todas as Respostas
-
-
Então, ele normalmente usa uns 10 pool abertos o dia todo, mas em algum momento o pool cresce interruptamente, não para mais de crescer, já vi chegar a 3000 pool aberto e nem temos isso tudo de máquina conectada ao banco. Ou seja, em algum momento "alguém" para de fechar o pool, fica aberto e começa a crescer até travar a máquina.
-
Boa tarde, wcsantos. Tudo bem?
Obrigado por usar o fórum MSDN.
Conseguiu algum avanço no teu caso? Se ainda não o que falta?
Atenciosamente,Filipe B de Castro
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
Não descobri o que causava o problema no MySql.
O que fiz para resolver foi, ao invés de fazer vários acessos ao banco de dados com filtros WHERE específicos, fazer apenas um acesso com um retorno de dados grande e tratar isso via código no programa.
Sendo assim, reduzi o numero de acessos ao banco. Mas não descobri porque as conexões abriam e não fechavam...
-
Nao use datareader...use datatable.
(MySqlDataReader
A flower cannot blossom without sunshine, and man cannot live without love.
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 26 de setembro de 2018 23:01